Я новичок в mongoose, и я пытаюсь провести очень простые эксперименты со ссылками и схемами.Попытка заполнить вложенный массив в mongoose, казалось бы, несвязанный CastError брошен, и я не могу понять, почему
Что я пытаюсь сделать, так это иметь «установочный» объект, который содержит массив устройств, сгруппированных по типу. Внутри этой группы имеется массив идентификаторов отдельных устройств.
Мои схемы, как это:
///INSTALLATIONS.js
var installationSchema = mongoose.Schema({
_id: Number,
devices: [deviceType:String,
ids: {type: [mongoose.Schema.Types.ObjectId], ref: 'device'}}]
})
export const model = mongoose.model("installation", installationSchema);
///DEVICES
var deviceSchema = mongoose.Schema({
deviceType : String,
code: String
})
export const model = mongoose.model("device", deviceSchema);
Наполнение установки:
var installationsSchemaModel = require("INSTALLATIONS.js");
installationsSchemaModel.model.find().populate('devices.ids')
Я получаю эту ошибку:
2016-06-23T15:40:26.328Z - error: installations CastError: Cast to number failed for value "576ab1796c2672501fa69054" at path "_id"
Вот как мои соответствующие данные в Монго выглядит:
///INSTALLATION I'm trying to populate. The collection contains this single item
{
"_id" : 131,
"devices" : [{
"deviceType" : "TYPE1",
"ids" : [ObjectId("576ab1796c2672501fa69054")]
}]
}
///DEVICE i'm trying to reference
{
"_id" : ObjectId("576ab1796c2672501fa69054"),
"deviceType" : "TYPE1"
}
Почему я получаю сообщение об ошибке, пытаясь заполнить мою коллекцию?
Я попытался изменить тип installation._id на Number и ошибку whent away, но население все же потерпело неудачу: полученная структура была с пустым массивом устройств.
Что мне делать, чтобы исправить эту ошибку?
Свойство '_id' является внутренним идентификатором MongoDB, который вам не нужен (может быть, даже не должен) определять его и, конечно же, не менять его тип! Не делайте этого '' _id ": 131,'. Если вам нужно собственное свойство id в вашей схеме, просто используйте что-то еще, возможно, просто 'id'. – Molda