Ho una semplice classe JS:Problemi memorizzazione funzioni JS in Mongo DB con Node.js
var User = function(id){
this._id = id;
this.sayHello = function(){
return "hello";
}
}
Ho poi vado a conservarlo in MongoDB utilizzando il driver di default Node.js:
users.insert(new User(1));
Infine, recuperare l'utente, e cercare di eseguire la funzione:
users.findOne({_id:1}, function(err, item) {
console.log("Say hello: " + item.sayHello());
});
ricevo il seguente errore, che è davvero confusa:
throw err;
^
TypeError: Object #<Object> has no method 'sayHello'
Sono totalmente perso su questo. La mia comprensione è che MongoDB ha memorizzato sia le funzioni JS sia le proprietà così come sono. Se questo non è il caso, puoi consigliare come posso aggirare questo problema?
Grazie!
il tuo esempio funziona per me tramite la shell mongo. Nessun errore che sia mai stato fatto e sayHello() viene invocato correttamente. – zeusdeux
@zeusdeux la domanda riguarda 2 processi: mongodb e un processo del server delle applicazioni node.js separato. La shell mongo è un'utilità di sviluppo. Questa domanda riguarda la creazione di un'applicazione in node.js. –
@peter si ho capito. I metodi dell'oggetto vengono serializzati prima di essere archiviati comunque, quindi con ogni probabilità il risultato non dovrebbe differire a prescindere da dove viene eseguito, che si tratti del client mongo o di un'app nodo. Lo proverò da un'app oggi per sicurezza. – zeusdeux