Я использую Mon goose, и я хочу обновить количество в массиве, если элемент существует в массиве, иначе вставьте новую запись - PullRequest
0 голосов
/ 11 апреля 2020

Здесь Моя Модальная Схема

const userSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  cart: {
    items: [{ 
      productId: {
        type: Schema.Types.ObjectId,
        ref: 'Product',
        required: true
      },
      quantity: { 
        type: Number,
        required: true
       } 
     }],
  },
});

Я использую этот тип фильтра и обновляю для вставки / обновления записей

const query = { _id: req.user._id, 'cart.items': { productId: ObjectId(product._id) } };
const update = { 'cart': finalCart  };
const options = { upsert: true };

await User.findOneAndUpdate(query, 
    { $addToSet : { 'cart.itmes' : [{ productId: ObjectId(product._id), quantity: { $inc: 1 } }] }}, 
    options
    ).then();

Но это не работает Это выдает мне следующую ошибку

{MongoError: Коллекция ошибок дубликатов ключей E11000: индекс shop.users: id ключ дубликата: {_id: ObjectId ('5e9072f17d5fd8c1d4762428')}}

...