2011-08-11 23 views
32

Tengo el siguiente esquema (disculpas que está en CoffeeScript)Cómo utilizar mangosta findOne

Schema = mongoose.Schema 

AuthS = new Schema 
    auth: {type: String, unique: true} 
    nick: String 
    time: Date 
Auth = mongoose.model 'Auth', AuthS 

Simplemente quiero recuperar un registro que es, sin duda en mi base de datos:

Auth.findOne({nick: 'noname'}, function(obj) { console.log(obj); }); 

Desafortunadamente esto siempre registra null. db.auths.findOne({nick: 'noname'}) en mongo shell siempre devuelve un valor. Que esta pasando?

+14

No hay necesidad de disculparse por estar en CoffeeScript; simplemente no lo etiquetes con 'javascript'. –

Respuesta

63

encontrado el problema, necesita utilizar function(err,obj) lugar:

Auth.findOne({nick: 'noname'}, function(err,obj) { console.log(obj); }); 
+1

Cuando uso 'findOne' de esta manera obtengo mis datos con éxito, pero' obj' no es un objeto 'Document'. Cuando intento 'obj.nick' y' obj [nick] 'no estoy definido. Cuando intento 'obj.get ('nick')' obtengo el objeto no tiene el método get. Intenté muchas conversiones JSON y creé un 'doc = new Document (obj)'. También probé 'doc.toObject (obj)' y 'doc.set (obj)'; –

+2

@JonathanCzitkovics Creo que si obj.toObject() que le daría lo que estaba buscando. – Guy

+5

Cuando la operación se ejecuta satisfactoriamente (err es nulo), pero no coincide, el documento también será nulo. –

2

Es posible que desee considerar el uso de console.log con los "argumentos" objeto integrado:

console.log(arguments); // would have shown you [0] null, [1] yourResult 

Este será siempre la salida de todo de sus argumentos, no importa cuántos argumentos tenga.