この質問は、Node.js を使用する 10 世代の MongoDB クラスの宿題の質問から生じていますが、宿題 (Mongo に関するもの) を解決するように求めているのではなく、2 つの関数間の関係を説明するよう求めているのではありません。session.js ファイルでは、メソッドは次のようにデータ オブジェクト モジュールaddUser
で呼び出されます。users
users.addUser(username, password, email, function(err, user) {
"use strict";
if (err) {
// this was a duplicate
if (err.code == '11000') {
errors['username_error'] = "Username already in use. Please choose another";
return res.render("signup", errors);
}
// this was a different error
else {
return next(err);
}
}
sessions.startSession(user['_id'], function(err, session_id) {
"use strict";
if (err) return next(err);
res.cookie('session', session_id);
return res.redirect('/welcome');
});
});
ユーザーデータオブジェクトモジュールには、this.addUser
このような関数があります
this.addUser = function(username, password, email, callback) {
"use strict";
// Generate password hash
var salt = bcrypt.genSaltSync();
var password_hash = bcrypt.hashSync(password, salt);
// Create user document
var user = {'_id': username, 'password': password_hash};
// Add email if set
if (email != "") {
user['email'] = email;
}
//node convention first arg to call back error, 2nd the actual data we're returning, callbackwith value if added user
// look in session.js file that uses the UsersDAO to get a sense of how this is being used and
// what type of callback is passed in.Task is to fill in code to add a user when one tries to signup
// TODO: hw2.3
callback(Error("addUser Not Yet Implemented!"), null);
}
ユーザーをmongoデータベースに追加できるようにするコールバックを実装することになっています。私はあなたにそれを教えてほしいと言っているわけではありません。むしろ、users.addUser 関数の 4 番目の引数はコールバック関数function(err, user) { }
です。また、このthis.addUser
関数はcallback
4 番目のパラメーターとして を持っているため、users.addUser
内部で からのコールバック関数が実行されthis.addUser?
ます。この 2 つの関係を明確にするのに役立ちますか? 関数が終了したときにコールバックが実行されることは知っていますが、なぜそれが渡されているのかわかりませんthis.addUser