如何使用$resource 来post 中的数据angular.js?
How to use $resource to post data in angular.js?
我尝试保存对我文章的评论
关于我的后端和模式的一些话
文章:
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'
},
});
}
]);
我在我的 angular 控制器中尝试了很多版本的 addComment,但我总是得到错误 - undefined
$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 = '';
};
如何保存评论???
您可以使用 $save 方法是 $resource 服务,如官方文档所述 here。
举个例子,在你的控制器中你可以做类似的事情:
创建一个终点 '/api/discusses/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 回调中可用。
希望对您有所帮助,如果您需要更多帮助,请告诉我。
我尝试保存对我文章的评论
关于我的后端和模式的一些话
文章:
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'
},
});
}
]);
我在我的 angular 控制器中尝试了很多版本的 addComment,但我总是得到错误 - undefined
$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 = '';
};
如何保存评论???
您可以使用 $save 方法是 $resource 服务,如官方文档所述 here。 举个例子,在你的控制器中你可以做类似的事情: 创建一个终点 '/api/discusses/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 回调中可用。 希望对您有所帮助,如果您需要更多帮助,请告诉我。