Я пытаюсь удалить один объект из коллекции User следующим образом:
router.post('/accept-trades', function (req, res, next) {
const {senderName, receiverName, senderId} = req.body;
const user = req.user;
console.log(senderName, receiverName);
if (senderName) {
User.findOne({ name: senderName })
.then(sender => {
_.remove(user.receivedTradeRequest, {username: senderName});
_.remove(sender.sentTradeRequest, {username: receiverName});
console.log('user.receivedTradeRequest', user.receivedTradeRequest);
console.log('\n\nuser.sentTradeRequest', user.sentTradeRequest);
async.parallel([
function (cb) {
user.save()
.then(isSave => {
cb(null, true);
})
.catch(err => {
cb(err, null);
});
},
function (cb) {
sender.save()
.then(isSave => {
cb(null, true);
})
.catch(err => {
cb(err, null);
});
}
], (err, results) => {
if (err) {
return res.status(500).json({
message: 'Error: Trade is invalid as Card is already traded!',
});
}
res.send('done');
//res.redirect('/trade');
});
})
.catch(err => {
throw err;
});
} else {
return res.status(500).json({
message: 'Only accessible to logged in users!',
});
}
});
Здесь пользователь получает доступ через req.user (я использую паспорт).
Когда я зарегистрируйте пользователя после удаления, user.receivedTradeRequest и sender.sentTradeRequest, печатая пустой массив, который является правильным поведением.
Но когда я вижу mongodb, массив все еще присутствует для имени пользователя.
Не могли бы вы подсказать, что не так с кодом?
PS: Я знаю о mongodb $ pull для удаления. Я делаю некоторые другие вычисления для пользовательских данных, так что было связано с вышеуказанным подходом.