2012-02-01 18 views
8

我想創建一個簡單的MongooseJS示例程序,獲取集合中的項目列表,它每次都會回來空。下面是代碼:Mongoose JS查詢所有回來空或空

var mongoose = require('mongoose') 
    , Schema = mongoose.Schema; 

var sampleSchema = new Schema({ 
    sampleField : String 
}); 

var db = mongoose.connect('mongodb://localhost:27017/test'); 

var sampleCollection = mongoose.model('sampleCollection', sampleSchema); 

sampleCollection.find({ } , function (err, items) { 
    console.log(items); // outputs [] 
    console.log(err); // outputs null 
    items.forEach(function(item) { 
     console.log(item); // does not reach this code 
    }); 
}); 

我的MongoDB運行的默認實例,這是我的殼已經進入:

> use test 
> db.sampleCollection.save({sampleField : "Hello"}); 
> db.sampleCollection.save({sampleField : "Goodbye"}); 
> db.sampleCollection.find({}); 
{ "_id" : ObjectId("4f28944b38b59225012109da"), "sampleField" : "Hello" } 
{ "_id" : ObjectId("4f28945138b59225012109db"), "sampleField" : "Goodbye" } 

任何想法,爲什麼我的代碼不返回任何數據?

感謝您的幫助, 戴夫

回答

12

mongoose將規範集合的名稱爲小寫和pluralzed。因此,您應該插入db.samplecollections而不是db.sampleCollection。 (請注意這裏的字母cs的區別)。

來測試它:

s = new sampleCollection({sampleField: 'hello'}); // creates a new record 
s.save(function(err) { 
    sampleCollection.find({ } , function (err, items) { 
     console.log(items); 
     console.log(err); 
     items.forEach(function(item) { 
      console.log(item); 
     }); 
    }); 
}); 

,並正確打印:

[ { sampleField: 'hello', _id: 4f28ab4cc9e58f710a000001 } ] 
null 
{ sampleField: 'hello', _id: 4f28ab4cc9e58f710a000001 } 

然後在蒙戈外殼:

> show collections 
samplecollections   //<<<<<<<<<<<<<< It's all lowercase and pluralized 
system.indexes 

> db.samplecollections.find() 
{ "sampleField" : "hello", "_id" : ObjectId("4f28ab4cc9e58f710a000001") } 
+1

+1也是多元化的。 sampleCollection - > samplecollections – 2012-02-01 03:21:33

+1

@WesFreeman哦,謝謝,答案已更新。 – qiao 2012-02-01 03:32:35

+2

哇!感謝您的幫助,現在有道理。爲什麼貓鼬文件沒有提到這一點? http://mongoosejs.com/看起來像文檔中的巨大差距... – 2012-02-01 05:06:12

3

雖然這是事實,你可以指定的名稱在第三個參數中的集合,它將使用該字符串的情況:

var sampleCollection = mongoose.model('sampleCollection', sampleSchema,'SampleCollection');