【发布时间】:2022-01-09 03:55:57
【问题描述】:
Expense Tracker 应用程序:Nodejs、Mongodb
尝试创建一个仅更新对象数组中请求中传递的字段的函数
数据库架构
const updateExpense = async (req, res) => {
try {
let db = mongo.getDb()
let { macro, micro, amount, note } = req.body;
let { username, id } = req.query
let expense = await db.collection("Expense").updateOne({ username: username, "expenses.expense_id": ObjectId(id) }, { $set: {
"expenses.$.macro": macro,
"expenses.$.micro": micro,
"expenses.$.amount": amount,
"expenses.$.note": note }
});
res.status(200).json({
message: "Expense Updated",
expense: expense
});
} catch (err) {
res.status(500).json({
message: err.message
});
}
}
上述函数将所有其他字段替换为 null
如果用户只传递了微字段,那么其他字段应该保持不变,只有微字段应该改变,其他字段不应该改变。
需要一个 MongoDB 查询,它只会根据 req 中传递的数据更改所需内容
【问题讨论】: