创建用户,回调

Create user, callback

第一 post。我是一名学习 js 的学生,遇到了一个回调问题,我不确定如何正确构造它。

var bcrypt = require('bcrypt-nodejs');
var users = db.collection("users");
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;
    }

    // NOT SURE What to write here
    callback(Error("addUser Not Yet Implemented!"), null);

}

首先:尽可能不要使用同步方法,而是使用回调。

var bcrypt = require('bcrypt-nodejs');
var users = db.collection("users");
this.addUser = function(username, password, email, callback) {
   "use strict";

   // Generate password hash
   bcrypt.genSalt(function(err, salt) {
       if (err) {
           callback(err);
           return;
       }
       bcrypt.hash(password, salt, function(err, password_hash) {
           if (err) {
               callback(err);
               return;
           }

           // Create user document
           var user = {
               '_id': username,
               'password': password_hash
           };

           // Add email if set
           if (email != "") {
               user['email'] = email;
           }

           // NOT SURE What to write here
           callback(null);
       });
   });
}

并请提出准确的问题。 如果我理解正确,你不知道如何处理回调? 您只需传递将在函数中的所有工作完成后调用的函数作为参数回调。完成后,您可以使用所需参数调用回调。 如果出现错误,则为 err 对象;如果没有错误,则为 null。

如果您想将创建的用户传递给回调,只需替换 回调(空);带回调(空,用户);