2016-12-28 92 views
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; 
}); 
} 
+0

爲什麼'JSON.stringify' POST數據?只需傳遞一個json對象('this.createcomment.post('/ comments',{comment:commentContent,user_id:userId,post_id:postId})',並且在服務器上params可以作爲'comment','user_id'和'post_id') –

+0

哦,你需要像這樣保存對'this'的引用:'var self = this;'並且在承諾解析/拒絕函數中,你需要使用'self.comment = res.data;' –

+0

謝謝,我現在控制器正在工作。我可以記錄評論並看到它被傳遞給服務。但是該服務僅記錄:comment undefined undefined。所以userId和postId沒有定義。如果我的服務是構造函數對象,那麼定義它們的正確方法是什麼? – TYPOI

回答

0

您沒有傳遞任何值,用戶id或postId:

this.commentsService.createComment(comment); 

它們爲空。