Mongoose“创建”方法 - 没有回调吗? (使用护照和角度)
Posted
技术标签:
【中文标题】Mongoose“创建”方法 - 没有回调吗? (使用护照和角度)【英文标题】:Mongoose "Create" method - Is there no callback? (Using passport and angular) 【发布时间】:2015-02-09 23:47:51 【问题描述】:我正在使用 mongoose 在注册时创建用户对象。这工作正常,任何错误都会按预期返回。
但是,我想在用户注册后立即登录(所以如果没有错误,注册会登录)。
我有以下的寄存器。
注册控制器:
$scope.submitRegister = function()
AuthenticationService.register(this.details).success(function()
$log.debug('/POST to /api/register worked');
);
services.js:
.service('AuthenticationService', function($http, $timeout, $q, $session, $flash)
...
this.register = function(details)
var register = $http.post('/api/register', details);
register.success(function()
console.log("User added fine");
).error(function()
console.log("error!!!");
);
return register;
;
...
users.js:
app.post('/api/register', authentication.register);
护照的authenticate.js:
module.exports =
...
register: function(req, res)
var User = require('./controllers/api/login_api');
User.create(name: req.body.name, email: req.body.email, password: req.body.password, function(err)
if (err)
console.log(err);
return;
console.log("User added");
return res.send(200);
);
,
...
错误报告很好,没有麻烦,但我原以为它会报告其他东西(比如创建的对象?),我可以使用它,这样我的 register_controller 就可以成功function(object) ... login(object);...
。
这是 .create 方法的限制还是我遗漏了一些明显的东西?
谢谢。
【问题讨论】:
顺便说一句,如果发生错误,我会返回 4XX 响应,您可以使用客户端的拦截器将它们全部捕获。 您想将创建的对象从 mongo 返回给您的客户端吗? @jack.the.ripperif (err) console.log(err); return res.send(4XX, err);
- 像这样? @BenDiamant 是的,注册后,在成功回调中我想调用登录,这需要电子邮件和密码才能登录(login(credentials)
)
@Gary 正确,始终发送响应是一个好习惯,您可以在客户端处理。
@jack.the.ripper 谢谢,现在添加了。
【参考方案1】:
你的服务器代码有两点需要改变:
护照的authenticate.js:
module.exports =
...
register: function(req, res)
var User = require('./controllers/api/login_api');
User.create(name: req.body.name, email: req.body.email, password: req.body.password, function(err, user)
if (err)
console.log(err);
return;
console.log("User added");
return res.send(200, user);
);
,
...
我已将用户添加到您的回调 Mongoose model.create api - 将创建的对象返回给 CB
并更改客户端中的捕获:
.service('AuthenticationService', function($http, $timeout, $q, $session, $flash)
...
this.register = function(details)
var register = $http.post('/api/register', details);
register.success(function(user)
console.log(user);
).error(function()
console.log("error!!!");
);
return register;
;
...
现在您可以根据需要对创建的用户对象做任何事情
【讨论】:
太棒了,谢谢。没想到要加在那里!以上是关于Mongoose“创建”方法 - 没有回调吗? (使用护照和角度)的主要内容,如果未能解决你的问题,请参考以下文章