У меня есть простой JS класс:Проблемы хранения функции JS в Монго DB с Node.js
var User = function(id){
this._id = id;
this.sayHello = function(){
return "hello";
}
}
Я затем хранить его в MongoDB используя драйвер по умолчанию Node.js:
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-функции, так и свойства as-is. Если это не так, можете ли вы порекомендовать, как я могу обойти это?
Спасибо!
Ваш пример работает для меня через оболочку монго. Нет ошибок, которые так всегда и sayHello() вызывается правильно тоже. – zeusdeux
@zeusdeux вопрос о двух процессах: mongodb и отдельном процессе сервера приложений node.js. Оболочка mongo - это утилита разработки. Этот вопрос касается создания приложения в node.js. –
@peter да, я получил это немного. Методы объектов сериализуются до хранения в любом случае, поэтому, по всей вероятности, результат не должен отличаться независимо от того, где он выполняется, будь то клиент-монго или приложение-узел. Я попробую это из приложения сегодня, чтобы быть уверенным. – zeusdeux