Попробуйте
const dataArray = await db.collection("mycoll")
.find({ status: "init" })
.project({ _id: 1 })
.sort(sort)
.limit(limit)
const pending_array_whitelist = dataArray.map((data) => {
return (data._id)
})
const update = await db.collection("mycoll").update(
{ _id: { $in: pending_array_whitelist } },
{ $set: { status: "pending" } },
{ multi: true }
)
console.log(update)
Итак, вы хотите написать характеристику, которая будет выполнять проверку, чтобы увидеть, была ли модель обновлена с момента получения текущей, и отбросить что-то, что вы можете зацепить, чтобы уведомить пользователя? Я хотел бы изучить создание базовой модели, которую расширяют все ваши модели, и использование событий модели в этой базовой модели. Возможно, вам даже не понадобится черта, если у вас есть все модели, расширяющие базовую модель. См. Ниже пример метода события модели:
protected static function boot(){
parent::boot();
static::saving(function($thisModel){
$changes = Model::where('version', $thisModel->version)
->where('id', $thisModel->id)->first()
/** if changes->version matches this one, good, if not, set some
* property on the model that can be checked.
*/
}
}
Это произойдет , когда модель будет сохранена, и если вы return false;
окажетесь в любой точке метода, сохранение завершится неудачно, и модель не будет сохранена.
Если вы все еще хотите использовать черту, убедитесь, что метод загрузки соответствует следующему формату: bootTraitName (), иначе он не загрузится при загрузке реализующих классов. Это сложный вопрос с множеством разных точек зрения, но я надеюсь, что по крайней мере дал вам кое-что рассмотреть.
Редактировать: я никогда не использовал модельные события в базовой модели, поэтому я не уверен, что parent::boot();
необходимо. Возможно, придется проверить.