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;
});
}
POSTデータを 'JSON.stringify'するのはなぜですか? jsonオブジェクト( 'this.createcomment.post( '/ comments'、{comment:commentContent、user_id:userId、post_id:postId})を渡し、サーバー上で' comment'、 'user_id'と 'post_id') –
ああ、このような' this'への参照を保存する必要があります: 'var self = this;'と約束/拒否機能では 'self.commentを使ってコントローラを参照する必要があります= res.data; ' –
ありがとうございました、私は今コントローラーを使用しています。私はコメントを記録し、それがサービスに渡されているのを見ることができます。ただし、サービスはログのみを記録します。したがって、userIdとpostIdは定義されていません。私のサービスがコンストラクタオブジェクトである場合、それらを定義する適切な方法は何ですか? – TYPOI