Это должна быть довольно простая ошибка, но она уже давно меня сбивает с толку.
Вот моя схема:
const TeamSchema = new Schema({
status: {
type: String
},
total: {
type: Number,
default: 0,
},
wins: {
type: Array,
required: true,
default: [],
},
loses: {
type: Array,
required: true,
default: [],
});
Мой код:
let objToUpdate = {
'$addToSet': {
'results': opponent
},
'total': matchDetails.total + 1,
'status': 'Processing',
};
if (win) {
objToUpdate['$addToSet'].wins = opponent;
} else {
objToUpdate['$addToSet'].loses = opponent;
}
TeamStatistics.findOneAndUpdate({_id:teamId},objToUpdate,{new:true},function(err, result){
if(err){
console.log(err);
} else {
console.log(result)
});
Я сталкиваюсь с этой ошибкой:
MongoError: '$addToSet' is empty. You must specify a field like so: {$addToSet: {<field>: ...}}
Код вычисляет статистику каждой команды и добавляет соперника каждого матча либо к массиву побед, либо к массиву поражений в зависимости от того, выиграла ли команда у соперника или проиграла. Независимо от результата, все противники также сохраняются в общем массиве. Мне нужно использовать $addToSet, чтобы один и тот же противник не учитывался дважды.
Я попытался распечатать объект objToUpdate перед вызовом findOneAndUpdate и увидел, что внутри есть значение.
{
'$addToSet': { wins: 'Team Warrios', total: 'Team Warrios' },
status: 'Processing'
}
На основе этого вопроса Я также проверил, что схема и поля, которые я пытаюсь добавить, совпадают.
Сослался на этот вопрос, но это не не полезно.
Любой вклад приветствуется.
Я использую Mongoose — 5.1.3 и NodeJS — 12.6.0.
opponent
пусто? - person D. SM   schedule 06.07.2020