У меня есть следующий случай - я хочу перебрать каждый элемент в БД и:
bumped
поле, установленное в false
затем:
bumped
с true
User.updateMany(
{
bumped: false,
creationDate: {
$gte: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
},
},
{
$set: {
bumped: true,
},
},
(err, res) => {
//
// What is "res" here? <====== question
},
);
Мой вопрос - что такое аргумент res
в функции обратного вызова?
Вопрос2: будет ли выполняться обратный вызов только для этих элементов, которые удовлетворяют условию?
Спасибо вам большое!
Функция updateMany
не возвращает обновленные документы. Возвращает только количество обновленных документов.
Поэтому единственное, что вы можете здесь сделать, - это сначала найти все документы и выполнить итерацию один за другим, а затем вызвать функцию отправки почты.
const users = await User.find({
"bumped": false,
"creationDate": {
"$gte": new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
}
})
const promises = users.map(async(user) => {
await User.updateOne({ _id: user._id }, { $set: { bumped: true }})
// Here you can write your send mail function
})
await Promise.all(promises)
const users = User.find(...)
не нуждается в ключевом словеawait
. Или я не прав? Даже компилятор жалуется на это - «Await должен использоваться внутри функции Async»async
функцией