2012-09-13 9 views
5

Sto cercando di trovare un oggetto con _id con Meteor.Meteor: trovare un oggetto da una collezione di _id

Ecco che cosa ho provato:

Meteor.publish("gifts", function(gid) { 
    console.log("Looking for "+ gid); 
    var gifts = Gifts.find({_id: gid}).fetch(); 
    console.log("Result: " + gifts); 
    return gifts; 
}); 

Questa è l'uscita:

Cerco f1790caa-7a10-4af5-a01c-e80bb2c2fd55 Risultato:

Se io estrai la query:

Meteor.publish("gifts", function(gid) { 
    console.log("Looking for "+ gid); 
    var gifts = Gifts.find().fetch()[1]; 
    console.log("Result:" + gifts._id); 
    return gifts; 
}); 

L'oggetto è nell'array e _id è lo stesso di sopra.

Cerco f1790caa-7a10-4af5-a01c-e80bb2c2fd55 Risultato: f1790caa-7a10-4af5-a01c-e80bb2c2fd55

Inoltre, se eseguo il ritrovamento in una console Mongo, trovo il oggetto:

> db.gifts.find({_id: 'f1790caa-7a10-4af5-a01c-e80bb2c2fd55'}); 
{ "name" : "A new gift", "_id" : "f1790caa-7a10-4af5-a01c-e80bb2c2fd55" } 

Cosa sto sbagliando?

risposta

5

Da dove hai inserito il documento? MongoDB considera le stringhe e gli oggetti ID in modo diverso, e sembra che attualmente ci sia un bug in Meteor che non gestisce correttamente objectIds.

https://github.com/meteor/meteor/issues/61

+1

Grazie per il puntatore. Sorprendente che qualcosa di così fondamentale come questo non funzioni, anche in previsione della fase iniziale di Meteor. –

+0

Nella versione 1.4 di meteor, il comportamento può ancora essere osservato (ho corso nella stessa trappola). Il problema collegato da @shelman consiglia l'uso di 'mete shell' anziché della console mongo. – zliw

Problemi correlati