我正在使用 NodeJs 和 MongoDB 地圖集來保存/更新用戶組態檔。但是,該updateOne方法不會更新多個欄位,我不知道為什么!它僅適用于一個變數,而不適用于整個記錄!這是我的代碼:
app.post("/edit-profile", async (req, res) => {
if(req.body.password || req.body.phoneNumber){
res.status(401);
res.send({"error": "this api is not for changing password or phoneNumber"})
} else {
console.log("let's update this user: id=" req.body.id)
console.log(req.body)
result = User.updateOne(
{ _id: ObjectId(req.body.id)},
req.body,
(error, result) => {
if (error) {
console.log(error);
res.status(400);
res.send();
} else {
if (result.n > 0) {
console.log("result")
console.log(result)
res.header({ sessionToken: "testToken" });
res.send(req.body);
} else {
console.log("there is no user with this id")
res.status(404);
res.send({"message":"There is no user with this id!"});
}
}
}
);
}
});
例如,每當我擁有它時
{
"id":"6253024ca9a2fb3a9a8d3675",
"weight":888
}
但不適用于
{
"id":"6253024ca9a2fb3a9a8d3675",
"height":999
}
僅適用于weight引數,不會創建新欄位 ( height)。即使我同時使用多個欄位并得到相同的結果。此外,我還有另一個用于更新餐點的 API,它具有類似的結構并且可以正常作業。這是我的這個 API 的代碼:
app.post("/edit-meals", async (req, res) => {
const { error } = mealSchema.validate(req.body);
if (error) {
res.status(400); // 400 bad request
res.send(error.details[0].message);
} else {
const meal = await Meal.findOne({ title: req.body.title });
if (meal) {
Meal.updateOne({ title: req.body.title }, req.body, (err, result) => {
if (err) {
res.status(403);
res.send;
} else {
res.send(req.body);
}
});
} else {
res.status(404);
res.send();
}
}
});
雖然在updateOne中有效,edit meals但在中無效edit user。如果有人能幫助我解決這個問題,我將不勝感激。
uj5u.com熱心網友回復:
檢查您的User模型是否定義了所有欄位。Mongoose 將忽略模型中不存在的所有屬性。
因此,檢查User架構并查看是否height定義了欄位。
uj5u.com熱心網友回復:
app.post("/edit-meals", async (req, res) => {
const { error } = mealSchema.validate(req.body);
if (error) {
res.status(400); // 400 bad request
res.send(error.details[0].message);
} else {
const meal = await Meal.findOne({ title: req.body.title });
if (meal) {
Meal.updateOne({ title: req.body.title }, {{$set:{field: value}}}, (err, result) => {
if (err) {
res.status(403);
res.send;
} else {
res.send(req.body);
}
});
} else {
res.status(404);
res.send();
}
}
});
試試這個{欄位:值}
uj5u.com熱心網友回復:
使用 updateMany 更新 mongoDb 中的多個檔案。
updateMany({data})
要在 mongodb 檔案中添加新欄位,請使用
updateMany({_id: ObjectId(req.body.id)},{$set:{key:value}})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/460143.html
標籤:javascript 节点.js mongodb 表示 猫鼬
上一篇:如何在錯誤物件中列印屬性值?
