我正在创建用户并需要获取最近创建的用户的ID,但我无法通过回调获取它。这就是我所拥有的:
controller.js:
Auth.createUser({
name: this.user.name,
email: this.user.email,
password: this.user.password,
}, function (err, user) {
console.log(user); // Return only the params 'name', 'email, 'password', not the '_id'
}
auth.service.js:
/**
* Create a new user
*
* @param {Object} user - user info
* @param {Function} callback - function(error, user)
* @return {Promise}
*/
createUser(user, callback) {
return User.save(user, function(data) {
$cookies.put('token', data.token);
currentUser = User.get();
return safeCb(callback)(null, user);
}, function(err) {
Auth.logout();
return safeCb(callback)(err);
})
.$promise;
},
修改 如果我尝试通过API终点:
$http.post('/api/users/', {
name: this.usr.name,
email: this.usr.email,
password: this.usr.password
})
我得到了这个对象:
Object { data: Object, status: 200, headers: headersGetter/<(), config: Object, statusText: "OK" }
其中:
data {
token: eyJhbGciOiJ...Vs3Ng14ycQA
__proto__: Object
}
所以无论如何我都无法获得用户信息。
你可以帮我吗?伙计们?提前谢谢。答案 0 :(得分:0)
为什么你让你的任务变得更复杂我认为你误解了一些概念。让我试着清除它。
好的,所以每当你答应回来时,你都可以选择解决问题 并拒绝这意味着当你解决或拒绝你的时候 可以得到它......或者......接听电话。
Auth.createUser({
name: this.user.name,
email: this.user.email,
password: this.user.password,
}, function (err, user) {
console.log(user); // Return only the params 'name', 'email, 'password', not the '_id'
}
您的createUser签名应为
function createUser(OBJECT,CALLBACK_FUNCTION)
这里回调函数意味着只要你想要调用函数,如果你调用那个函数,那么只有你可以调用这个函数 - &gt;
function(err,user){ 的console.log(用户); //只返回params&#39; name&#39;,&#39; email,&#39; password&#39;,而不是&#39; _id&#39; }
这里你没有处理承诺你正在进行一个函数调用,它有回调作为参数,所以你必须写这样的函数..并相应地调用回调
createUser(user, callback) {
User.save(user, function(data) {
$cookies.put('token', data.token);
currentUser = User.get();
//return safeCb(callback)(null, user);
//call that function callback with needed parameter.
callback(null,user);//giving first para as null as no error
}, function(err) {
Auth.logout();
//return safeCb(callback)(err);
callback(err);
})
},
希望这会有所帮助。 如果您还有任何疑问,请告诉我。 编辑
可能是你错过了一个支架..
Auth.createUser({
name: this.user.name,
email: this.user.email,
password: this.user.password,
}, function (err, user) {
console.log(user); // Return only the params 'name', 'email, 'password', not the '_id'
});