【发布时间】:2016-02-02 14:07:30
【问题描述】:
我正在学习 Node / Mongoose,并试图弄清楚如何防止 ListItems 数组中的重复:
var listitemSchema = new mongoose.Schema({
name: String,
rank: Number
});
...存在于用户内部:
var userSchema = new mongoose.Schema({
username: String,
password: String,
list: [{
type: mongoose.Schema.Types.ObjectId,
ref: "ListItem"
}]
});
...基于用户是否已经在他/她的列表中拥有该名称。我正在研究$addtoset,但无法真正弄清楚在处理对象时如何设置条件。 docs 不是很有帮助,我似乎在网上找不到类似的例子。
现在我的“POST”请求是一团糟,看起来像这样:
router.post("/editlist", isLoggedIn, function(req,res){
User.findById(req.user._id).populate("list").exec(function(err , user) {
if(err) {
console.log(err);
res.redirect("/editlist");
} else {
//prevent duplicates based on username
User.update(
{ "_id": req.user._id },
{ $addToSet: { "streamName": req.body.listitem.name}
});
res.redirect("/watch");
}
});
});
谁能送我上路?我的 $addToSet 没有将项目推送到 list 数组中。
【问题讨论】:
-
为什么要推送到
streamName字段而不是list? -
是的,那是我的错,不过现在又出现了一个错误
标签: javascript arrays node.js mongodb mongoose