我有一個簡單的JS類:問題存儲JS功能蒙戈DB與Node.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 shell爲我工作。沒有錯誤,所以永遠sayHello()也被正確調用。 – zeusdeux 2013-03-15 11:22:17
@zeusdeux的問題是關於2個進程:mongodb和一個單獨的node.js應用服務器進程。 mongo shell是一個開發工具。這個問題是關於在node.js中構建一個應用程序的。 – 2013-03-15 15:27:46
@peter是的,我得到了那一點。在存儲之前,對象方法是序列化的,所以很可能結果不會有差別,而不管它從何處執行,無論它是mongo客戶端還是節點應用程序。 今天我將嘗試從應用程序內部進行確認。 – zeusdeux 2013-03-16 15:18:22