Я хочу убедиться, что только ОДИН элемент в массиве помечен как "текущий".Поэтому я думаю, что если входящие данные помечены как «current = true», то я хочу изменить ВСЕ другие элементы на «current = false».
данные выглядят так:
{
_id:123,
name:"bob jones",
schools:[
{
name: "central HS",
current: false
},
{
name: "east side HS",
current: true
}
]
}
Так что, если бы я добавил школу - я хотел бы убедиться, что существующие школы были помечены как текущие: false - ТОЛЬКО если входящая школа была помечена как текущая: true.
входящий объект выглядит следующим образом:
{
name: "Discipline Military Academy HS",
current: true
}
Вот код, который я пытаюсь использовать.Я не получаю ошибку - но существующие школы с current = true остаются, без изменений.Таким образом, похоже, что он НЕ работает
ПРИМЕЧАНИЕ. Переданный идентификатор - это _id этого человека (_id: 123)
module.exports.addSchool = function( id, data, callback ) {
// reset all the other "currents" to false (only ONE current school permitted)
if ( typeof data.current != 'undefined' && data.current === true ) {
// NOTE: a console.log('here'); shows I'm getting past the conditional...
User.update( {_id: id}, {$set: {'schools.0.current': false}} );
}
User.findByIdAndUpdate( id, {
$addToSet: {
"schools": data
}
}, {new: true}, callback );
}
Любые предложения?
ПРИМЕЧАНИЕ.используя mongoose 5.2.13 для подключения моего экспресс-приложения к mongoDB, и я получаю это предупреждение - (узел: 14508) DeprecationWarning: collection.findAndModify устарела.Вместо этого используйте findOneAndUpdate, findOneAndReplace или findOneAndDelete.
Но я не использую "findAndModify" - так что я не думаю, что это применимо, хотя мне любопытно, почему он отображает.