2015-12-21 3 views
0

В моей базе данных есть следующие типы документов для коллекции категорий.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 пуст.

Edit:

Когда я заменить mongoose.Types.ObjectId с Schema.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' 
       }], 
    ....... 
}); 
Смежные вопросы