2011-04-10 11 views
0

Dans mon Node.js/app express, quand je regarde dans MongoDB, je suis arrivé ce qui suit:Node.js/MongoDB, ne peut pas récupérer les enregistrements

> db.things.find()[0]._id         
ObjectId("4da06702584ca3f402000001") 

Il n'existe une collection avec id 4da06702584ca3f402000001. Mais quand j'utilise une demande, je ne peux pas la récupérer:

app.get('/thing/show', function(req, res){ 
    res.writeHead(200, {'content-type': 'text/plain'}); 
    Thing = mongoose.model('Thing'); 
    id = "4da06702584ca3f402000001"; 
    Thing.find({ _id : id }, function(thing){ 
    console.log("THING RETRIEVED:" + thing); 
    res.write(JSON.stringify(thing)); 
    }); 
    res.end(); 
}); 

Rien n'est retourné.

Une idée?

* MISE À JOUR *

Cela ne fonctionne pas non plus:

Thing.find({ _id:ObjectId("4da06702584ca3f402000001")}, function(thing){ 

Il soulève l'erreur suivante:

Error: This is an abstract interface. Its only purpose is to mark fields as ObjectId in  the schema creation. 
at ObjectId (/usr/local/lib/node/.npm/mongoose/1.1.24/package/lib/mongoose/schema.js:426:9)... 

* SOLUTION *

Mon mauvais ....

Le problème n'est pas avec la fonction de recherche mais avec la méthode de rappel que j'utilise ... Je n'ai fourni qu'un seul paramètre (chose) où je devrais fournir (err, tring).

+0

essayez 'mongoose.model ('chose')' – Raynos

Répondre

1

Le problème était dans la fonction de rappel où je aurais dû (err, chose) en tant que paramètres au lieu de seulement (chose).

0

Essayez:

Thing.findById(id, function(thing){ 
+0

J'avais déjà essayé cela mais rien n'est retourné non plus. – Luc

Questions connexes