не удается обновить логический объект мангуста с отметкой времени

#javascript #node.js #mongodb #mongoose

Вопрос:

У меня возникли проблемы с обновлением логического объекта, и я каждый раз получаю ошибку-

это и есть объект-

         const mongoose = require('mongoose');
    
    const PlantProductSchema = new mongoose.Schema({
    
      waterMotor: {
        state: {
          type: Boolean,
          default: false,
          time: { type: Date, default: Date.now },
        }
      },
    
    });


module.exports = mongoose.model('PlantProduct', PlantProductSchema);
 

это действие обновления-

       plantProduct.waterMotor.update({state: idResultsObj.motorState });
 

idResultsObj.motorStat-это логическое значение, которое я выбрал

с другой стороны, когда я меняюсь, я делаю это —

 plantProduct.waterMotor.state = idResultsObj.motorState;
 

это работает, но не дает отметки времени.

Я ценю любую помощь, которую получу!!

Комментарии:

1. посмотрите на правильный синтаксис метода update () .

2. можете ли вы предоставить более подробную информацию о вашей схеме? @ярон к

3. я добавляю в схему.

4. кроме того, пожалуйста, добавьте ошибку, которую вы получаете. @яронк

5. Ошибка:не определено

Ответ №1:

вы неправильно используете функцию обновления. он принимает два аргумента: первый-это документ, который необходимо обновить, а второй-действие.

вам нужно передать идентификатор (или любое другое поле, например имя пользователя) обновляемого документа в качестве первого аргумента.

 plantProduct.waterMotor.update({_id: id},  {state: idResultsObj.motorState });
 

Комментарии:

1. Я нашел объект Plantproduct, который я хочу изменить. но даже если я это сделаю: const PlantProduct = require('../../models/PlantProduct'); PlantProduct.waterMotor.update({ _id: plantProduct._id }, { state: idResultsObj.motorState }); я все равно получаю ошибку: не определено

2. Я попытался сделать это и сделал это с mongoos const res = await PlantProduct.waterMotor.updateOne({ _id: plantProduct._id }, { state: idResultsObj.motorState }); console.log(res) все равно я получаю ту же ОШИБКУ @A R, @rohanraj

Ответ №2:

Это пара API, которые мангуст поддерживает для операции обновления. Что касается вашего кода, вы неправильно использовали обновление. update это свойство Model объекта, которое вы получаете undefined . мысль, сказанная ниже, — это запрос, который может вам помочь.

 const mongoose = require('mongoose');

const PlantProductSchema = new mongoose.Schema({
  waterMotor: {
    state: {
      type: Boolean,
      default: false,
      time: {
        type: Date,
        default: Date.now
      },
    }
  },
});


const ProductModel = mongoose.model('PlantProduct', PlantProductSchema);

const filterQuery = {}
const updateQuery = {
  $set: {
    "waterMotor.state": true
  }
}

ProductModel.update(filterQuery, updateQuery, function(error, result) {
  if (error) {
    console.log(error)
  } else {
    console.log(response)
  }
})