[英]Issue with Mongoose model.save callback
我正在用一本書學習 Node.js。 我沒有按照原樣處理和使用書中的示例代碼,而是使用基礎並在自己的代碼中重用用作學習練習。
我有這個用於創建新用戶的代碼,我將復制我認為相關的內容。 我期望發生的是 user.register 使用 model.register 並根據用戶是否創建並相應地發送響應來接收真或假
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 接收真或假,但我做錯了什么,無法弄清楚為什么。
我讓這段代碼改變了方法,但由於這對我來說是一個學習實驗,我希望能夠以這種方式做到這一點。
如果有人能指出我正確的方向或告訴我我做錯了什么,我將不勝感激。 謝謝。
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 :)
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.