#javascript #node.js #mongodb #mongoose #mongoose-schema
#javascript #node.js #mongodb #mongoose #mongoose-схема
Вопрос:
У меня есть модель с именем OrderModel, и она также имеет ссылки на другие модели
const orderSchema = new Schema({
_id: Schema.Types.ObjectId,
address: { type: addressSchema, required: false },
items: [{ type: Schema.Types.ObjectId, ref: 'Items' }],
date: { type: Date, default: moment(new Date()) },
user: { type: Schema.Types.ObjectId, ref: 'Users' },
is_completed: { type: Boolean, required: true, default: false },
is_canceled: { type: Boolean, required: true, default: false }
});
и когда я хочу обновить эту модель с помощью ИСПРАВЛЕНИЯ, это выдает мне ошибку,
CastError: Cast to [ObjectId] failed for value "["5f0c9493f833e23a0028bd31,5f0c9429f833e23a0028bd2f"]" at path "items"
Вот как я это делаю в своем коде,
router.patch('/order', (req, res) => {
const query = { _id: req.body._id };
const _token = req.headers.authorization;
let data = req.body;
jwt.verify(_token, process.env.AUTH_TOKEN_KEY, (err, decoded) => {
console.log(query);
if (err) {
res.json({ message: 'Token Invalid'.err });
} else {
OrderModel.findOneAndUpdate(query, data, { new: true }, (err, doc) => {
console.log(doc,query);
if (doc) {
return res.json({ message: 'Succesfully saved', data: doc });
}
return res.json({ message: `No order found for id ${req.body._id}` });
});
}
})
})
у меня есть два элемента в виде массива, отправленные из интерфейса
{
"_id": "5f8f1b7b29cbed4a8495d646",
"items":"5f0c9493f833e23a0028bd31,5f0c9429f833e23a0028bd2f",
"user":"5f06060110b7881ac0244005",
"address":{
"line_1": "Address line 1",
"line_2": "Address line 1",
"city": "Los Angeles",
"state": "California",
"pin": "90210"
},
"is_completed": false,
"is_canceled": false
}
что я здесь делаю не так?
Комментарии:
1. Я не знаю, является ли это опечаткой, но интерфейс должен отправлять
["5f0c9493f833e23a0028bd31","5f0c9429f833e23a0028bd2f"]
2. это опечатка. исправлено.
3. что именно ваш req.body?
4. обновлен вопрос с телом запроса
5. @BiswaBhusan как вы сказали, опечатка исправила проблему. Спасибо, приятель