我对我的代码有点困惑,它没有按应有的方式同步工作。我使用everyauth 进行身份验证。
registerUser(function(newUserAttrs) {
        var login = newUserAttrs[this.loginKey()];
        user.CreateNewUser(newUserAttrs.login, newUserAttrs.password, newUserAttrs.email, function(res, err) {
            if(!err) {
                return usersByLogin[login] = newUserAttrs;
            }
            else {
                throw err;
            }
        });
    })
在另一个文件中我写了这段代码
exports.CreateNewUser = function(login, pass, mail, callback) {
    var sql = "insert into `user`(login,mail,pass) values(?,?,?)";
    client.query(sql, [login, mail, pass], function(err, results, fields) {
        if(!err) {
            callback(results);
            console.log('test')
        }
        else {
            callback(results, err);
        }
    });
};
这段代码工作正常。我测试过他。唯一的问题是它们正在同步工作(正常)。有人可以向我解释一下我以错误的方式做了什么使其异步的事情。我想以同步的方式完成它。
当前代码给我错误(它在数据库中输入并在浏览器上产生错误)
Error: Step registerUser of `password` is promising: userOrErrors ; however, the step returns nothing. Fix the step by returning the expected values OR by returning a Promise that promises said values.
    at Object.exec (E:\proj\Node\node_modules\everyauth\lib\step.js:68:11)
    at E:\proj\Node\node_modules\everyauth\lib\stepSequence.js:26:38
    at [object Object].callback (E:\proj\Node\node_modules\everyauth\lib\promise.js:13:12)
    at RouteTriggeredSequence._bind (E:\proj\Node\node_modules\everyauth\lib\stepSequence.js:25:20)
    at RouteTriggeredSequence.start (E:\proj\Node\node_modules\everyauth\lib\stepSequence.js:52:33)
    at RouteTriggeredSequence.routeHandler (E:\proj\Node\node_modules\everyauth\lib\routeTriggeredSequence.js:13:13)
    at Object.<anonymous> (native)
    at nextMiddleware (E:\proj\Node\node_modules\connect\lib\middleware\router.js:175:25)
    at param (E:\proj\Node\node_modules\connect\lib\middleware\router.js:183:16)
    at pass (E:\proj\Node\node_modules\connect\lib\middleware\router.js:191:10)
谢谢