带有Express.js和Mongoose.js的Bacon.js和RxJS

时间:2014-12-08 12:12:34

标签: node.js express functional-programming mongoose bacon.js

我在Express.JS(版本4.x)的服务器端使用Bacon.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

1 个答案:

答案 0 :(得分:2)

您应该将Bacon.fromNodeCallBack与对象一起使用:

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

这将为您的代码正确绑定this