我目前有这个
<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"])
});
}
});
};