我正在寻找在angularjs中使用$save
方法的回调。
我正在向node.js后端发送一篇博文,并通过recaptcha验证。
在$resource
文档中执行操作无效:
非GET实例操作:实例。$ action([参数],[成功],[错误])
var post = new Posts({
title: this.title,
content: this.content,
response: this.model.captcha.response,
challenge: this.model.captcha.challenge
});
post.$save({},
function(addedpost) {
$location.path('posts/' + addedpost._id);
}, function(error) {
console.log(error);
vcRecaptchaService.reload();
});
在服务器中,我使用node {js的simple_recaptcha
模块来验证请求中打包的recaptcha质询和响应。
var verifyRecaptcha = function(req,res,next){
var privateKey = 'XXXXXXXXXXXXXXXXXXXXXXXX';
var ip = req.ip;
var challenge = req.body.challenge;
var response = req.body.response;
simple_recaptcha(privateKey, ip, challenge, response, function(err) {
if(err) return res.send(401,err.message);
console.log('Recaptcha verified!');
});
next();
};
因此,当验证码正确时,它应该继续并将帖子添加到数据库,否则,后端响应401
,前端角度js应该将此识别为错误并刷新重新接收。
我错过了什么?
答案 0 :(得分:2)
有时我也会在AngularJS的(通常非常好的)文档中迷路。 就我而言,我在这里找到了一个解决方案:how-to-add-call-back-for-resource-methods-in-angularjs
您可以让服务器在POST上完成工作并分析响应,例如:
post.$save(
function(data){
console.log(JSON.stringify(data));
if(data.error_message){
// ... error_message comes from the server
} else {
// ...
}
}
);