2012-09-13 20 views
5

Estoy tratando de encontrar un objeto por _id con Meteor.Meteor: Encontrar un objeto de una colección por _id

Esto es lo que he intentado:

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

Ésta es la salida:

Buscando f1790caa-7a10-4af5-A01C-e80bb2c2fd55 Resultado:

Si yo sacar la consulta:

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

El objeto está en la matriz, y _id es el mismo que el anterior.

Buscando f1790caa-7a10-4af5-A01C-e80bb2c2fd55 Resultado: f1790caa-7a10-4af5-A01C-e80bb2c2fd55

Además, si ejecuto el hallazgo en una consola mongo, creo que el objeto:

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

¿Qué estoy haciendo mal?

Respuesta

5

¿De dónde introdujo el documento? MongoDB trata cadenas y objetos de manera diferente, y parece que actualmente hay un error en Meteor que no maneja objectIds correctamente.

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

+1

Gracias por el puntero. Sorprende que algo tan básico como esto no funcione, incluso teniendo en cuenta que Meteorito está en su etapa inicial. –

+0

En la versión meteoro 1.4, el comportamiento aún se puede observar (corrí en la misma trampa). El problema vinculado por @shelman recomienda usar 'meteor shell' en lugar de la consola mongo. – zliw

Cuestiones relacionadas