在AngularJS中调用$ save方法
我正在寻找一个callback在我的$save
方法在angularjs中使用。
我正在发送一篇博文到node.js后端,并通过了recaptchavalidation。
正如$resource
文档中的操作不起作用:
非GET实例操作:实例。$ action([parameters],[success],[error])
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
模块来validation请求中打包的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(); };
所以当validation码是正确的,它应该继续,并添加后,数据库,如果不是,后端响应401
和前端angular度js应该认识到这是错误,并刷新recaptcha。
我错过了什么?
有时我也会迷失在AngularJS的(通常非常好的)文档中。 在我的情况下,我在这里find了一个解决scheme: 如何添加callback资源方法in-angularjs
您可以让服务器在POST上进行工作并分析响应,如下所示:
post.$save( function(data){ console.log(JSON.stringify(data)); if(data.error_message){ // ... error_message comes from the server } else { // ... } } );