#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)
}
})