我尝试将评论保存到我的文章中
关于我的后端和模式的一些关键词
文章:
var DiscussSchema = new Schema({
...
user: {
type: Schema.ObjectId,
ref: 'User'
},
comments: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Comment'
}]
});
评论:
var CommentSchema = new mongoose.Schema({
body: {
type: String,
default: '',
required: 'Please fill Comment name',
trim: true
},
user: {
type: Schema.ObjectId,
ref: 'User'
},
discuss: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Disquss'
}
});
我为我的服务器控制器添加了到服务器路由的路由
app.route('/api/discusses/:discussId/comments')
.all(discussesPolicy.isAllowed)
.post(discusses.comment);
我的Angular服务
angular.module('discusses').factory('Comments', ['$resource',
function($resource) {
return $resource('api/discusses/:discussId/comments', {
discussId: '@_id'
}, {
update: {
method: 'PUT'
},
});
}
]);
我在角度控制器中尝试了很多版本的addComment,但我总是得到错误 - 未定义
$scope.addComment = function(){
if($scope.body === '') { return; }
//Comment service
Comment.addComment(discuss._id, {
body: $scope.body,
user: 'user',
}).success(function(comment) {
$scope.discuss.comments.push(comment);
});
$scope.body = '';
};
如何保存评论???
答案 0 :(得分:1)
您可以使用$ save方法是$ resource服务,如官方文档here中所述。 举一个例子,在你的控制器中,你可以这样做: 创建一个终点' / api / discussion / comments '。
var CommentResource = $resource('/api/discusses/comments');
$scope.myFun = function(){
var commentRes = new CommentResource();
commentRes.discuss_id = 'some..iid';
commentRes.comment = 'some comment';
commentRes.someParam = 'some param value';
commentRes.$save(function(result){
//do something with result..
});
}
$ save 适用于 POST http谓词,因此请在后端正确处理。 您可以使用快速路由处理程序中的 req.body 访问传递到$ save的所有值。 在处理req.body参数后,您可以将值传递给angularjs,结果将在$ save回调中可用。 我希望它有所帮助,如果您需要更多帮助,请告诉我。