#node.js #mongoose
#node.js #мангуст
Вопрос:
Я хочу обновить вложенный документ FinanceSchema.Вот моя модель
const FinanceSchema = new mongoose.Schema({
moneyToBePaid: {
type: Number,
},
moneyPaid: {
type: Number,
},
moneyToBeReceived: {
type: Number,
},
moneyReceived: {
type: Number,
},
});
const UserSchema = new mongoose.Schema({
financialInformation: [FinanceSchema],
});
module.exports=mongoose.model('user',UserSchema)
Это маршрут
Я могу публиковать финансовую информацию
router.post("/users/:id/profile", async (req, res) => {
const _id = req.params.id;
const {
moneyToBePaid,
moneyPaid,
moneyToBeReceived,
moneyReceived,
} = req.body;
const finance = {
moneyToBePaid,
moneyPaid,
moneyToBeReceived,
moneyReceived,
};
try {
const user = await User.findById(_id);
user.financialInformation.unshift(finance);
await user.save();
}
Я не могу обновить financeInformation(FinanceSchema)
.Я не понимаю, как определить маршрут и обновить его.
Ответ №1:
Попробуйте вызвать markModified(), так как mongoose может не принять изменения автоматически:
const user = await User.findById(_id);
user.financialInformation.unshift(finance);
user.markModified('financialInformation');
await user.save();
Редактировать:
Если вы хотите изменить financialInformation
по определенному индексу, вы можете просто выполнить следующее:
const user = await User.findById(_id);
user.financialInformation[0].moneyReceived = 1000000;
await user.save();
Комментарии:
1. Я могу нажать financialInfo в пользовательской схеме. Моя единственная проблема в том, что я не могу обновить определенную financialInfo, которая является массивом.
2. Вы имеете в виду, что хотите обновить
financialInformation
по определенному индексу? Или все элементы массива?3. Смотрите мою правку. Там я изменяю значение для
moneyReceived
индекса0
.4. Если это решило вашу проблему, пожалуйста, убедитесь, что вы приняли этот ответ, нажав на галочку слева.
5. Действуйте both.eg . У пользователя есть 3 финансовые данные. Я должен иметь возможность обновить все 3 из них или один из них.