2013-04-18 2 views
0

J'essaie d'enregistrer un objet javascript avec des fonctions, mais face à une erreur. Voici le code:enregistrer des objets javascript avec des fonctions dans mongodb

var mongo = require('mongodb'); 
createObject = function(){ 
var data = {_id:1,"name":"object", 
    "fun":new mongo.Code("function fun() {print(1)}")}; 
    db.collection("objects").insert(data,function(err,result){ 
    console.log(err); 
    console.log(result); 
    }); 
} 

getObject = function(){ 
var f = db.collection("objects").findOne(); 
f.fun(); 
} 

Et l'erreur:

throw err; 
     ^
TypeError: Object #<Object> has no method 'fun' 

Quand je vérifié MongoDB, il sauve la fonction "fun". Mais pas exécuté lorsqu'il est récupéré de Mongo?

Merci d'avance.

+0

J'ai essayé ce [link] (http://stackoverflow.com/questions/10211076/how-can-i-save-a-stored-javascript-into-mongodb-from-node-js) ainsi que didn 't help – codejammer

+0

J'ai juste essayé de l'exécuter dans mongodb shell et cela a fonctionné .. – lopisan

+0

@lopisan Oui, cela fonctionne dans mongo shell mais pas j'essaye de l'exécuter dans node.js et son ne fonctionne pas – codejammer

Répondre

1

Je n'ai pas résolu le problème avec la gestion de la fonction, mais je l'ai remarqué une erreur dans le code, getObject devrait ressembler à

getObject = function(){ 
db.collection("objects").findOne(function(err, f) { 
    console.log(f); 
    // f.fun(); 
}); 
} 

Vous pouvez extraire la fonction en tant que chaîne et peut-être utiliser eval à l'exécuter si vous en avez vraiment besoin? Je ne sais pas (je n'ai pas trouvé) meilleure réponse.

+0

Utilisation' eval ' effectivement résolu le problème.Merci beaucoup @Lopisan – codejammer

Questions connexes