用Node.js在mongodb中存储JS函数的问题

Problems storing JS functions in Mongo DB with Node.js

本文关键字:JS 函数 问题 存储 Node js mongodb      更新时间:2023-09-26

我有一个简单的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函数和属性。如果不是这样,你能建议我如何解决这个问题吗?

谢谢!

Mongo不能存储函数(代码),只能存储数据。获取返回的原始数据并将其传递给构造函数,或者考虑像mongoose这样的ODM。

有一组非常具体和有限的条件,其中您可以以字符串形式发送mongo函数代码,并在服务器上对其进行评估。这些都记录在MongoDB手册中。然而,在mongo内部运行的代码的目的是支持复杂的数据查询操作,而不是为应用程序逻辑建模,而这正是这个问题所要问的。应用程序逻辑在node.js模块.js文件中。数据进入数据库