如何通过单击没有ngForm的链接或按钮将数据添加到MongoDB数据库?

时间:2018-11-11 05:03:39

标签: html node.js angular typescript mean-stack

我目前有这个

<form #saveArticleForm="ngForm"(ngSubmit)="saveArticleForm.valid && saveArticle(saveArticleForm)">

   <input type="text" #articles="ngModel" [(ngModel)]="userService.selectedUser.articles" name="articles" placeholder="Article"/>

   <input type="submit" value="Save"/>

</form>

,这很好。我可以将输入的任何内容保存到数据库中的数组中。但是,我不希望用户键入文章的名称。他们应该能够只单击保存按钮,并且标题应该保存在数据库中。

我可以使用插值{{article_title}}从包含我们文章的单独API中获得文章的名称。

可能有用的其他信息

前端

这是saveArticle()函数

saveArticle(form: NgForm) {
    this.userService.getUserProfile().subscribe(
      res => {
        this.userDetails = res["user"];
        this.userService.addArticle(form.value).subscribe();
      },
      err => {}
    );
  }

这些是addArticle()getUserProfile()

getUserProfile() {
  return this.http.get(environment.apiBaseUrl + "/userProfile");
}

addArticle(title: string) {
  return this.http.post(environment.apiBaseUrl + "/savearticle", title);
}

后端

这是在index.router.js页上

router.get("/userProfile", jwtHelper.verifyJwtToken, ctrlUser.userProfile);
router.post("/savearticle", ctrlUser.savearticle);

这是在user.controller.js页上

module.exports.savearticle = (req, res, next) => {
  User.findOneAndUpdate(
    req._id,
    {
      $addToSet: { articles: req.body.articles }
    },
    {
      new: true
    },
    function(err, savedArticle) {
      if (err) {
        res.send("Error saving article");
      } else {
        res.json(savedArticle);
      }
    }
  );
};

module.exports.userProfile = (req, res, next) => {
  User.findOne({ _id: req._id }, (err, user) => {
    if (!user) {
      return res
        .status(404)
        .json({ status: false, message: "User record not found." });
    } else {
      return res.status(200).json({
        status: true,
        user: _.pick(user, ["fullName", "email", "articles"])
      });
    }
  });
};

0 个答案:

没有答案