2012-07-26 23 views
12

Parece que no puedo obtener una respuesta de mongodb. Estoy usando node.js y mongodb con la ayuda de la mangosta.Consulta de mangosta return null

En mi aplicación Node.js tengo

mongoose.connect('mongodb://localhost:27017/myDB'); 

var Schema = mongoose.Schema, 
    ObjectId = Schema.ObjectId; 

var BlogPost = new Schema({ 
    author : ObjectId, 
    title : String, 
    slug : { type: String, lowercase: true, trim: true }, 
    content : String, 
    summary : String, 
    date : Date 
}) 

var BlogModel = mongoose.model('BlogPost', BlogPost); 

BlogModel.find({}, function(docs){ 
    console.log(docs); 
}); 

Si escribo muestran DBS en la consola mongo consigo

admin (empty) 
myDB  0.203125GB 
local (empty) 
test (empty) 

db.blogmodel.find() Devuelve:

{ "_id" : ObjectId("50108d3df57b0e3375a20479"), "title" : "FirstPost" } 

y sí, tengo mongod funcionando.

fijo Solución

var BlogModel = mongoose.model('blogmodel', BlogPost, 'blogmodel'); 

funciona debido a que su (nombre del modelo, nombre de esquema, nombre de la colección)

+1

¡Este problema me ha vuelto loco! ¡Agregue crédito por su parte de solución fija! – efkan

Respuesta

21

Mangosta pluralice nombres de los modelos por lo que se está ejecutando find en la colección "entradas del blog" en lugar de "BlogPost". Dicho esto, tu consulta en el shell mongo está en la colección "blogmodel". En ese caso:

var BlogModel = mongoose.Model("BlogModel", ..) 

o pasar el nombre de la colección como el tercer parámetro:

var BlogModel = mongoose.model("BlogPost", schema, "blogmodel") 
+0

Gracias, tuve que cambiarlo al arreglo anterior, pero tu publicación me ayudó a resolverlo, así que te daré la respuesta. – lostAstronaut

5

El primer parámetro a su BlogModel.find devolución de llamada es err, el segundo parámetro es docs. Así que el código debe ser:

BlogModel.find({}, function(err, docs){ 
    console.log(docs); 
}); 
+0

Todavía devuelve en blanco [] Lo había intentado anteriormente. – lostAstronaut

+0

¿La colección 'BlogPosts' contiene documentos si la consulta desde el shell de mongo? – JohnnyHK

+0

Lo agregué a la publicación original y sí, tengo un documento para probar, que no puedo encontrar por alguna razón. – lostAstronaut

0

he experimentado error similar ayer, en mi caso, el error fue causado por los datos importados a mongo. Después de usar la clave mongoimport _id se almacenó como cadena en lugar de ObjectId. Cuando estaba consultando datos en mongo, todo funciona bien, pero en Mongoose, cuando estaba intentando encontrar algo por _id, siempre devolvía una matriz nula o vacía. Espero que la información sea útil para alguien.