【发布时间】:2019-09-21 15:52:24
【问题描述】:
我正在尝试为我的应用创建一个 editpost 功能,但我不断收到一条错误消息,提示“body is undefined”
ReferenceError: 正文未定义 在 EditPost (C:\server\controllers\posts.js:161:36)
我包含了控制器、组件和 html。
对于控制器
editPost(req, res) {
console.log(body);
const Schema = Joi.object().keys({
post: Joi.string().required(),
id: Joi.string().optional()
});
const { error } = Joi.validate(body, Schema);
if (error && error.details) {
return res.status(httpStatus.BAD_REQUEST).json({
msg: error.details
});
}
const body = {
post: req.body.post,
created: new Date()
};
Post.findOneAndUpdate({ _id: req.body.id }, body, { new: true })
.then(post => {
res
.status(httpStatus.OK)
.json({ message: "Post updated successfully", post });
})
.catch(err => {
return res.status(httpStatus.INTERNAL_SERVER_ERROR).json({
message: err
});
});
}
帖子组件
SubmitEditedPost() {
console.log(this.editForm.value);
const body = {
id: this.postValue._id,
post: this.editForm.value.editedPost
}
this.postService.editPost(body).subscribe(data => {
console.log(data)
this.socket.emit('refresh', {})
}, err => console.log(err))
M.Modal.getInstance(this.modalElement).close();
this.editForm.reset();
}
还有 HTML
<div class="container">
<div id="modal" class="modal">
<div class="modal-content">
<h4>
Edit Post
<button class="button"(click)="CloseModal()"> Close </button>
</h4>
<p *ngIf="postValue"> {{postValue.post}} </p>
<form [formGroup]="editForm" novalidate>
<textarea formControlName="editedPost" class="materialize-textarea"></textarea>
<div class="modal-footer">
<button class="secondary-content deleteBtn btn">Delete</button>
<button class="btn" (click)="SubmitEditPost()" >Save</button>
</div>
</form>
</div>
</div>
</div>
【问题讨论】:
-
editPost 函数第一行应该像 console.log(req.body) 并且当你验证时使用 req.body 而不是 body 或者你可以简单地添加 const { body } = req;作为editPost函数的第一行
-
在editPost()里面检查这一行
const { error } = Joi.validate(req.body, Schema);
标签: node.js angular controller components angular7