仅当对象不存在时才插入数组

时间:2018-06-18 11:52:15

标签: node.js mongodb mongoose

我有这个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));
    });
  }
); 

0 个答案:

没有答案