Не работает поиск и обновление в Mongoose со ссылкой на другие модели

#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 как вы сказали, опечатка исправила проблему. Спасибо, приятель