我有一个简单的JS类:
var User = function(id){
this._id = id;
this.sayHello = function (){
return "hello";
}
}
然后我使用默认的Node.js驱动程序将其存储在MongoDB中:
users.insert(new User(1));
最后,我检索用户,并尝试执行该功能:
users.findOne({_id:1}, function(err, item) {
console.log("Say hello: " + item.sayHello());
});
我收到以下错误,这实在令人困惑:
throw err;
^
TypeError: Object #<Object> has no method 'sayHello'
我完全失去了这个。我的理解是MongoDB按原样存储了JS函数和属性。如果不是这样,你能推荐我如何解决这个问题吗?
谢谢!
答案 0 :(得分:9)
Mongo无法存储函数(代码),只能存储数据。获取您获得的原始数据并将其传递给构造函数,或者考虑使用像mongoose这样的ODM。
有一组非常具体且有限的条件,您可以以字符串形式发送mongo功能代码并在服务器上进行评估。这些记录在the MongoDB manual中。但是,在mongo中运行的代码的目的是支持复杂的数据查询操作,而不是为应用程序逻辑建模,这就是这个问题所要求的。应用程序逻辑位于node.js模块.js
文件中。数据进入数据库。