我在更新布尔对象时遇到问题,每次都出错-
这是对象-
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;
它可以工作,但没有提供时间戳。
感谢我得到的任何帮助!
答案 0 :(得分:0)
您没有正确使用更新功能。它接受两个参数,第一个是要更新的文档,第二个是操作。
您需要传递正在更新的文档的 id(或任何其他字段,如用户名)作为第一个参数。
plantProduct.waterMotor.update({_id: id}, {state: idResultsObj.motorState });
答案 1 :(得分:0)
这些是 mongoose support 用于更新操作的几个 API。
关于您的代码,您以错误的方式使用了 update。 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)
}
})