У меня есть моя личная схема, подобная этой:
const schema = new mongoose.Schema({
_id: Number,
name: String,
birthday: Date,
sex: String
});
schema.pre('findOneAndUpdate', async function (next) {
try {
let counter = await Counters.findByIdAndUpdate('person',
{
$inc: {
value: 1
}
},
{ new: true}
);
this._update._id = counter.value;
next();
}
catch (err) {
next(err);
}
});
Проблема в том, что когда я пытаюсь добавить несколько новых людей с findOneAndUpdate
и upsert: true
, она генерирует CastError: Cast to ObjectId failed for value "18" at path "person"
.
Мой _id
определен как Number
, поэтому я не понимаю, почему он пытается привести его к ObjectId
?
Обновление:
Я обнаружил, что моя проблема связана с моделью Person
в другой модели, но я забыл изменить тип ссылки в другой модели ...
person: {
type: Number, //HERE
ref: 'person',
required: true
}