【发布时间】:2021-07-01 00:09:35
【问题描述】:
这是用户架构,我要更新的部分是 User.js 下的 ToDo(进一步向下)。我正在尝试将新数据添加到数据库中的数组中。
数据.js
app.post("/data", loggedIn, async (req, res) => {
console.log(req.body.content);
let content = { content: req.body.content };
User.update({ _id: req.user._id }, { $set: req.body }, function (err, user) {
if (err) console.log(err);
if (!content) {
req.flash("error", "One or more fields are empty");
return res.redirect("/");
}
user.ToDo.push(content);
res.redirect("/main");
});
});
用户.js
new mongoose.Schema({
email: String,
passwordHash: String,
ToDo: {
type: [],
},
date: {
type: Date,
default: Date.now,
},
})
最初我尝试使用 .push() 属性,但出现错误:
user.ToDo.push(content); ^TypeError: 无法读取未定义的属性“push”
【问题讨论】:
-
这意味着 user.ToDo 未定义,因此您无法推送它。可能有更好的方法,但我通常最终使用类似:
Array.isArray(user.ToDo) ? user.ToDo.push(content) : user.ToDo = [content] -
它肯定存在,因为我在robo3t中看到了我的初始值。不过我会试试这个谢谢
-
我刚刚在您的架构中看到您将 ToDo 作为一个对象。你不能
push一个对象。 -
你的意思是
user.ToDo.type.push(content)? -
这样,它创建了数组,但没有添加任何内容
标签: javascript node.js mongodb mongoose