无法使用时间戳更新布尔猫鼬对象

时间:2021-06-19 14:22:26

标签: 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;

它可以工作,但没有提供时间戳。

感谢我得到的任何帮助!

2 个答案:

答案 0 :(得分:0)

您没有正确使用更新功能。它接受两个参数,第一个是要更新的文档,第二个是操作。

您需要传递正在更新的文档的 id(或任何其他字段,如用户名)作为第一个参数。

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

答案 1 :(得分:0)

这些是 mongoose support 用于更新操作的几个 API。 关于您的代码,您以错误的方式使用了 updateupdateModel 对象的属性,这就是您获得 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)
  }
})

相关问题