我有这个Profile模型,它有多个字段,包括profileBadges字段,该字段具有以下形式:
profileBadges: [
{
name: {
type: String,
required: true
},
description: {
type: String,
required: true
}
}
]
你可以看到它是一个对象数组。我想要做的是将对象推入此数组,只有它已经不存在。 我正在使用猫鼬和节点。基本上我想这样做:搜索profileBadges数组并检查对象是否存在。如果存在,则不执行任何操作。如果它没有创建新条目。 我从mongoose那里读到了关于$ addToSet并尝试了它,但无论如何它都会不断添加记录。 到目前为止我所拥有的:
router.post(
"/badge",
passport.authenticate("jwt", { session: false }),
(req, res) => {
Profile.findOne({ user: req.user.id }).then(profile => {
const newBadge = {
name: req.body.name,
description: req.body.description
};
profile
.update({ $addToSet: { profileBadges: newBadge } }, { new: true })
.then()
.catch(err => res.status(404).json(err));
});
}
);