【发布时间】:2014-12-08 12:12:33
【问题描述】:
我在服务器端使用 Bacon.js 和 Express.JS(版本 4.x)
此方法从不响应!我在这里做错了什么吗?
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
【问题讨论】:
-
这看起来不错。
null参数是故意的吗?您的意思是使用 null 调用 User.find,如:User.find(null, function(err, docs) { ... -
是的,我把那个 null 放在那里测试给它一个可选参数。
-
而
User.find是否按预期工作?基本上,如果你完全跳过培根,只写User.find(null, function(err, docs) { if(err) { res.status(500).send(err); } else { res.status(200).send(docs); }}),这样行吗? -
是的,它与普通 API 完美配合
-
这可能是绑定
this的问题吗?你可以尝试给User.find.bind(User)而不是User.find作为参数。
标签: node.js express functional-programming mongoose bacon.js