我正在学习Node.js。我没有按照原样处理和使用图书示例代码,而是使用基础并重复使用自己的代码作为学习练习。
我有一个新用户创建的代码,我将复制我认为相关的内容。 我期望发生的是user.register使用model.register并接收true或false,具体取决于用户是否已创建并按顺序发送响应
app.js捕捉帖子
app.post('/user', users.actions.register);
user.js注册
var register = function ( req, res ) {
if ( req.body.username === '' ||
req.body.email === '' ||
req.body.password === '' ) {
//Some field is blank - insufficient information
console.log('User creation failure: Insufficient data');
res.json(400);
} else {
var newUser = new models.account.user ({
username: req.body.username,
email: req.body.email,
password: req.body.password
});
models.account.register ( newUser, function (succ) {
console.log (succ);
if ( succ === true ) {
res.json(200);
} else {
res.json(400);
}
});
}
};
然后是account.register
var register = function ( newUser ) {
console.log ('Save command sent.');
newUser.save ( function ( err ) {
if (err) {
console.log(err);
return false;
}
console.log('User Created');
return true;
});
};
用户在数据库上创建,控制台上的输出是
Save command sent.
User Created
我期待发生的事情是succ接受了真或假,但我做错了什么并且无法找出原因。
我让这段代码改变了方法,但由于这是我的学习实验,我希望能够这样做。
如果有人能指出我正确的方向或向我展示我做错了什么,我将不胜感激。 感谢。
答案 0 :(得分:2)
models.account.register ( newUser, function (succ) {
...
}
您将匿名函数作为第二个参数传递给register
。因此,register
必须接受并使用结果调用它,例如
var register = function ( newUser, callBackFunction ) { // accept the callback
console.log ('Save command sent.');
newUser.save ( function ( err ) {
if (err) {
console.log(err);
return callBackFunction(false); // invoke it on failure :(
}
console.log('User Created');
return callBackFunction(true); // invoke it on Success :)
});
};