2012-07-26 18 views
12

Non riesco a ottenere una risposta da mongodb. Sto usando node.js e mongodb con l'aiuto di mangusta.Restituzione query Mongo null

Nella mia app node.js ho

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); 
}); 

Se digito spettacolo DBS nella shell mongo ottengo

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

db.blogmodel.find() restituisce:

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

e sì ho mongod in esecuzione.

fisso Soluzione

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

Funziona perché il suo (nome del modello, nome dello schema, nome della raccolta)

+1

Questo problema mi ha fatto impazzire! Ho aggiunto credito per la parte della soluzione fissa! – efkan

risposta

21

Mongoose pluralizes nomi di modello quindi è in esecuzione find sulla raccolta "blogposts" invece di "blogpost". Detto questo, la tua query nella shell di mongo è nella raccolta "blogmodel". In tal caso:

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

o passare il nome di raccolta come il terzo param:

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

Grazie amico, ho dovuto cambiarlo con la correzione sopra ma il tuo post mi ha aiutato a risolverlo quindi ti darò la risposta. – lostAstronaut

5

Il primo parametro al tuo BlogModel.find callback è err, il secondo parametro è docs. Così il vostro codice dovrebbe essere:

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

Ancora ritorna in bianco [] L'avevo già provato in precedenza. – lostAstronaut

+0

La raccolta 'BlogPosts' contiene documenti se la si interroga dalla shell mongo? – JohnnyHK

+0

L'ho aggiunto al post originale e sì ho un documento per il test, che non riesco a trovare per qualche motivo. – lostAstronaut

0

ho vissuto errore simile ieri, nel mio caso l'errore è stato causato da dati importati a mongo. Dopo aver usato la chiave mongoimport _id è stata memorizzata come stringa invece di ObjectId. Quando stavo interrogando i dati in mongo tutto funziona bene, ma in Mongoose quando cercavo di trovare qualcosa con _id restituiva sempre Array nullo o vuoto. Spero che le informazioni possano essere utili per qualcuno.

Problemi correlati