问题与Mongoose model.savecallback

我正在学习Node.js。 我不是像现在这样应对和使用书本样本代码,而是使用自己的代码作为学习练习的基础和重复使用。

我有这个代码为一个新的用户创build,我将复制我认为是相关的。 我期望发生的是user.register使用model.register,并接收真或假,取决于用户是否创build和发送响应一致

app.js捕获该post

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; }); }; 

用户在数据库上创build,并在控制台上输出

 Save command sent. User Created 

我期望发生的事情是,succ接受真实或错误,但我做错了什么,不能弄清楚为什么。

我让这个代码改变了方法,但是因为这是我的一个学习实验,所以我希望能够这样做。

如果有人能把我指向正确的方向或告诉我我做错了什么,我将不胜感激。 谢谢。

 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 :) }); };