2016-12-28 9 views
0

私は入力フォームからデータベースにコメントを投稿しようとしています。現在渡しているコメントは、未定義としてログに記録されます。サービスがログに記録されず、私は500のサーバーエラーが発生します.user_idはnull制約に違反します。私は間違って何をしていますか?角度 - データベースへのコメントを投稿

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

POSTデータを 'JSON.stringify'するのはなぜですか? jsonオブジェクト( 'this.createcomment.post( '/ comments'、{comment:commentContent、user_id:userId、post_id:postId})を渡し、サーバー上で' comment'、 'user_id'と 'post_id') –

+0

ああ、このような' this'への参照を保存する必要があります: 'var self = this;'と約束/拒否機能では 'self.commentを使ってコントローラを参照する必要があります= res.data; ' –

+0

ありがとうございました、私は今コントローラーを使用しています。私はコメントを記録し、それがサービスに渡されているのを見ることができます。ただし、サービスはログのみを記録します。したがって、userIdとpostIdは定義されていません。私のサービスがコンストラクタオブジェクトである場合、それらを定義する適切な方法は何ですか? – TYPOI

答えて

0

あなたはuseridには任意の値を渡していませんか投稿ID:

this.commentsService.createComment(comment); 

これらはnullです。

関連する問題