Написание запроса, который обновляет массив объектов в базе данных до 10 мест каждый раз, когда он сохраняется

#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. У меня возникли проблемы с пониманием вашей проблемы. Можете ли вы привести пример (текущий по сравнению с тем, чего вы хотите достичь)? 🙂