2015-12-21 63 views
0

我的數據庫具有以下類型的Categories集合文檔。Mongoose:從集合中檢索ObjectIds數組

{ 
    "_id" : ObjectId("56716afa403743492828aa07"), 
    "cat_name" : "watches", 
    "cat_parent_id" : [ 
     ObjectId("56716afa403743492828aa01"), 
     ObjectId("56716afa403743492828aa03") 
    ] 
    ......... 
} 

我第一次創建數據庫Robomongo,然後我試圖提取採用了貓鼬數據和創建以下模式。

var categorySchema = new Schema({ 
    'cat_name' : String, 
    'cat_parent_id' : [{ type : mongoose.Types.ObjectId }], 
    ....... 
}); 

,但是當我通過以下的回調得到的結果,

Categories.find(function(err,categories){........}); 

的cat_parent_id數組爲空。

編輯:

當我更換mongoose.Types.ObjectIdSchema.Types.ObjectId或字符串,它works.Can任何人提供的理由是什麼?

+0

它不應該是{類型:mongoose.Types.ObjectId]}? – PeterVC

+1

看起來像一個愚蠢的http://stackoverflow.com/questions/28617798/mongoose-schema-reference-and-undefined-type-objectid – JohnnyHK

+0

原因是,你需要使用'mongoose.Schema.Types'來聲明模式性能; 'mongoose.Types'用於實例化特定類型,但與模式設置無關。 – robertklep

回答

0

您需要爲的ObjectId類型添加引用:

var categorySchema = new Schema({ 
    'cat_name' : String, 
    'cat_parent_id' : [{ 
       type: mongoose.Schema.Types.ObjectId, 
       ref: 'Categories' 
       }], 
    ....... 
});