2014-12-08 1 views
2

Я использую Bacon.js на стороне сервера с Express.JS (версия 4.x)Bacon.js и RxJS с Express.js и Mongoose.js

Этот метод никогда не отвечает! Неужели я делаю что-то крайне не так?

var User = require('../data/User'); 
var Bacon = require('baconjs').Bacon; 

module.exports = function(router){ 
     router.route('/users').get(function(req, res){ 

      var result = Bacon.fromNodeCallback(User.find, null); 

      result.onValue(function(docs){ 
       res.status(200).send(docs); 
      }); 

      result.onError(function(err){ 
       res.status(500).send(err); 
      }); 

    }); 
}; 

Видимо я неудачу с RxJS, а также ...

var User = require('../data/User'); 
var Rx = require('rx'); 

module.exports = function(router){ 
    router.route('/users').get(function(req, res){ 

     var query = Rx.Observable.fromNodeCallback(User.find)(); 

     query.subscribe(function(docs){ 
      res.send(docs); 
     }, function(err){ 
      res.send('Error: ' + err); 
     }, function(){ 
      console.log("COMPLETED"); 
     }) 

    }); 
}; 

Это ошибка, которая возвращается:

Error: TypeError: Cannot read property 'discriminatorMapping' of undefined 
+0

Это выглядит нормально. Является ли параметр «нуль» преднамеренным? Вы хотите называть User.find с нулевым значением, как в: 'User.find (null, function (err, docs) {...' – OlliM

+0

Да, я поставил там этот нуль, чтобы дать ему необязательный параметр. –

+0

И 'User.find' работает так, как ожидалось? В принципе, если вы полностью пропустите бекон и просто напишите' User.find (null, function (err, docs) {if (err) {res.status (500) .send (err); } else {res.status (200) .send (docs);}}) ', это работает? – OlliM

ответ

2

Вы должны использовать Bacon.fromNodeCallBack с объектом:

Bacon.fromNodeCallback(User, "find", null);

Это будет верно связывать this с кодом.

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

  • Нет связанных вопросов^_^