mongoose@6.10.0中List模型items数组追加更新失败求助
解决Mongoose数组元素追加不生效的问题
你的代码存在两个核心问题导致更新未生效,以下是修复方案:
问题分析
- 异步操作未等待:
List.updateOne是异步方法,你直接调用后立刻执行res.redirect,此时数据库更新尚未完成就跳转,导致看不到更新结果。 - 数据格式不匹配:
items数组存储的是符合itemSchema结构的对象({ item: String }),但你直接传入了字符串newItem,结构不匹配导致无法正确追加。
修复代码
app.post("/", async function(req, res){ var newItem = req.body.newItem; var listName = req.body.button; if(listName === "Today"){ await addItem(newItem); // 如果addItem是异步方法,必须加await等待完成 res.redirect("/"); }else{ // 将字符串包装为符合itemSchema的对象,同时等待更新操作完成 await List.updateOne({name: listName}, {$push: {items: { item: newItem }}}); res.redirect("/" + listName); } });
额外说明
如果你的addItem函数内部也是异步数据库操作(比如调用Item.create),同样需要在调用时加上await,避免出现类似的操作未完成就跳转的问题。
内容的提问来源于stack exchange,提问作者viscon
相关产品推荐
相关产品推荐

