2016-09-12 7 views
0

Здравствуйте, я пытаюсь создать приложение Node.js, подобное этому. Код в моем app.js файла:Обработчик событий Node.js не работает

var _ = require('underscore'); 
var employee = require('./employeeEmitter'); 
var EventEmitter = require('events').EventEmitter; 
var emitter = new EventEmitter(); 
var inherits = require('util').inherits; 
var data = [ 
    {id:1, firstName: 'John', lastName: 'Smith'}, 
    {id:2, firstName: 'Jane', lastName: 'Smith'}, 
    {id:3, firstName: 'John', lastName: 'Doe'} 
]; 
inherits(employee.EmployeeEmitter, EventEmitter); 
var newEmployeeEmitter = new employee.EmployeeEmitter(data); 
newEmployeeEmitter.on('lookupById',function(){newEmployeeEmitter.lookupById(newEmployeeEmitter.data,1)}); 
employee.EmployeeEmitter.prototype.test= function() { 
     this.emit('lookupById'); 
} 
console.log(newEmployeeEmitter.test); 

В моем employeeEmitter.js файл:

var _ = require('underscore'); 
var EventEmitter = require('events').EventEmitter; 
module.exports = { 
    EmployeeEmitter: function (args) { 
     this.data = args; 
     EventEmitter.call(this); 
    }, 
    lookupById : function(data,id){ 
     var foundId = _.where(data,{id:id}); 
     return foundId[0]; 
    }, 
    lookupByLastName : function(data,lastName) { 
     return _.where(data,{lastName: lastName}); 
    }, 
    addEmployee: function (data, firstName, lastName) { 
     // obtain next id 
     var newId = function (data) { 
      var id = _.max(data, function (data) { 
       return data.id; 
      }); 
      return id.id + 1; 
     } 
     // return new data (old data + new object, but without mutation of initial object) 
     data.push({id:newId(data), firstName: firstName, lastName: lastName }); 
     return data; 
    } 
} 

Я надеюсь, что когда я бег app.js, выход в окне консоли должен быть:

{ID: 2, ПгвЬЫат: 'Джейн', LastName: 'Смит'}

Однако, это показывает [Function]. Я не знаю, что произойдет. Может кто-нибудь мне помочь? Большое вам спасибо!

ответ

-1

Вы фактически не вызывали тестовую функцию, и когда вы излучали события, они ничего не возвращали.

Что-то больше, как это может работать:

var _ = require('underscore'); 
var employee = require('./employeeEmitter'); 
var EventEmitter = require('events').EventEmitter; 
var emitter = new EventEmitter(); 
var inherits = require('util').inherits; 
var data = [ 
    {id:1, firstName: 'John', lastName: 'Smith'}, 
    {id:2, firstName: 'Jane', lastName: 'Smith'}, 
    {id:3, firstName: 'John', lastName: 'Doe'} 
]; 
inherits(employee.EmployeeEmitter, EventEmitter); 
var newEmployeeEmitter = new employee.EmployeeEmitter(data); 
newEmployeeEmitter.on('lookupById',function(){console.log(newEmployeeEmitter.lookupById(newEmployeeEmitter.data,1));}); 
employee.EmployeeEmitter.prototype.test= function() { 
     this.emit('lookupById'); 
} 
newEmployeeEmitter.test(); 
+0

спасибо. Я перешел на ваш код, который в последней строке использует: newEmployeeEmitter.test(); однако, это дает мне еще одну ошибку: TypeError: newEmployeeEmitter.lookupById не является функцией –

Смежные вопросы