0
我想從輸入表單發表評論到我的數據庫。我目前傳遞的評論爲未定義的評論。該服務不記錄,我得到一個500服務器錯誤:user_id違反不空null約束。我做錯了什麼?Angular - 發表評論到數據庫
HTML(更新)
<div ng-controller="CommentsCtrl as commentsCtrl">
<div ng-show="makeComment" class="collapsible-header">
<input ng-model="comment" type="text" name="comment" id="comment_content" class="col s11 m11 l11" placeholder="Make a comment.">
<a href="" type="submit" class="col s1 m1 l1 black-text comment" ng-click="commentsCtrl.createComment(comment, userId, postId)"><i class="material-icons">check_circle</i></a>
</div>
控制器 - CommentsCtrl(更新)
this.comment = '';
createComment(comment, userId, postId) {
return this.commentsService.createComment(comment, userId, postId);
}
}
服務 - CommentsService(更新)
this.createcomment = $http;
this.commentContent = '';
this.postId;
this.userId;
createComment(comment, userId, postId) {
this.createcomment.post('/comments', { comment: this.commentContent, userId: this.userId, postId: this.postId })
.then((res) => {
this.comment = res.data;
})
.catch((err) => {
return err;
});
}
爲什麼'JSON.stringify' POST數據?只需傳遞一個json對象('this.createcomment.post('/ comments',{comment:commentContent,user_id:userId,post_id:postId})',並且在服務器上params可以作爲'comment','user_id'和'post_id') –
哦,你需要像這樣保存對'this'的引用:'var self = this;'並且在承諾解析/拒絕函數中,你需要使用'self.comment = res.data;' –
謝謝,我現在控制器正在工作。我可以記錄評論並看到它被傳遞給服務。但是該服務僅記錄:comment undefined undefined。所以userId和postId沒有定義。如果我的服務是構造函數對象,那麼定義它們的正確方法是什麼? – TYPOI