2016-04-13 4 views
2

У меня есть этот мангуст схема:Mongoose схема

var ItemSchema = new Schema({ 
    "pieces": Number, 
    "item": { type: Schema.Types.ObjectId, ref: 'Items' } 
}); 

var cartSchema= new Schema({ 
    "items": [ItemSchema] 
}); 

, но когда я хочу, чтобы подтолкнуть новый элемент в списке элементов, мангуст добавить поле _id (на новом элементе), но я не понимаю, почему.

+0

Связанных http://stackoverflow.com/questions/16881832/ – chridam

ответ

1

если вы хотите добавить элемент без _id поля, то вы должны добавить { _id: false } в ItemSchema.

var ItemSchema = new Schema({ 
    "pieces": Number, 
    "item": { type: Schema.Types.ObjectId, ref: 'Items' } 
}, { _id: false }); 
1

Mongoose присваивает каждой из ваших схем поле _id по умолчанию, если оно не передается в конструктор схемы. Назначенный тип - ObjectId, который совпадает с поведением MongoDB по умолчанию. Если вы не хотите, чтобы _id добавили в вашу схему вообще, вы можете отключить ее, используя эту опцию.

Этот параметр можно использовать только в поддоменах. Mongoose не может сохранить документ, не зная его идентификатор, поэтому вы получите сообщение об ошибке, если попытаетесь сохранить документ без _id.

Ссылка: http://mongoosejs.com/docs/guide.html#_id

+0

Нет, я обнаружил, что я могу удалить поле _id с '{_id: ложь}' – Lorenzo

+0

Вы можете использовать эту функцию только на поддокументах , Mongoose не может сохранить документ, не зная его идентификатор, поэтому вы получите сообщение об ошибке, если попытаетесь сохранить документ без _id. –

+0

Infact Я хотел удалить поле _id на суб-документе – Lorenzo

Смежные вопросы