#javascript #node.js #mongodb #express #mongoose
Вопрос:
В общем, я хочу создать функцию, которая работает после сохранения данных в моей базе данных, и проверяет, какую роль играет пользователь, который размещает данные, и если он регулярно использует, объем пространства, который можно сохранить, может составлять всего 10 мест в массиве.
Проблема в том, что я не уверен, как построить запрос, который обращается к данным, проверяет размер массива и изменяет массив в зависимости от объема сохраненного пространства и сохраняет его в базе данных.
Я создаю промежуточное программное обеспечение, которое запускает статический метод после запроса на сохранение, мой код выглядит следующим образом:
PlantProductSchema.statics.checkAmountOfData = async function (hubId, id) {
const user = await User.findOne({
hubId: hubId,
});
if (user.role === "user") {
try{
this.model('PlantProduct').findOneAndUpdate({"_id":id},{$cond:{ if: { $size: [ "$lightSensor", 10 ] }, then: , else: } })
}catch (e){
print(e);
}
}
}
PlantProductSchema.post('save', function () {
this.constructor.checkAmountOfData(this.hubId, this._id);
})
Моя проблема в том, как исправить этот запрос :
this.model('PlantProduct').findOneAndUpdate({"_id":this._id},{$cond:{ if: { $size: [ "$lightSensor", 10 ] }, then: , else: } })
где is PlantProduct
— это название модели мангуста, lightSensor
это массив объектов.
Вот как выглядит база данных PlantProduct
, например:
Я был бы признателен за любую помощь, которую я могу получить.
Комментарии:
1. У меня возникли проблемы с пониманием вашей проблемы. Можете ли вы привести пример (текущий по сравнению с тем, чего вы хотите достичь)? 🙂