Mongodb $ pull с async / await не работает должным образом - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть следующая UserSchema

const userSchema = new Schema({
    // Irrelevant properties
    likedPrograms: [{type:Schema.Types.ObjectId, ref: 'Program'}], 
});

Я пытаюсь удалить программу из этого массива с этим запросом

const updatedUser = await User.findOneAndUpdate({_id: req.params.id}, {$pull: {likedPrograms: {_id: programToRemove._id}}}, {new: true});

Однако эта строка кода выполняется без удаленияэлемент из массива.Это проблема с async / await?Если я пытаюсь сделать это с обратными вызовами, это работает, однако я не люблю использовать обратные вызовы в своем коде, поскольку я не хочу впадать в ад обратного вызова. Есть идеи, почему это не работает?

1 Ответ

0 голосов
/ 21 февраля 2019

Нет проблем с асинхронным ожиданием или обратными вызовами.Если вы посмотрите на свою схему, то у вас нет поля внутри likedPrograms, это просто массив ObjectIds, а не массив объектов с парой ключ-значение.

Это сработало быесли бы ты взял так

likedPrograms: [{ _id: { type: Schema.Types.ObjectId, ref: 'Program' }}]
...