我不能让这个回调工作

时间:2017-04-29 06:29:01

标签: javascript object callback passport.js

所以我有两个文件

file1.js:

var LocalStrategy   = require('passport-local').Strategy;
var query = require( "./file2.js" );

module.exports = function(passport) {

passport.use(
        'local-signup',
        new LocalStrategy({
            usernameField : 'username',
            passwordField : 'password',
            passReqToCallback : true // allows us to pass back the entire request to the callback
        },
        function(req, username, password, done) {

                 function callback(check) {
                    return check;
                 }

                var m = query.chkUsername(username, callback);
                var n = query.chkMail(req.body.email, callback);
                console.log("m "+m);
                console.log("n "+n);
        })
    );
};

file2.js

var mysql = require('mysql');
var bcrypt = require('bcrypt-nodejs');
var dbconfig = require('./database');
var connection = mysql.createConnection(dbconfig.connection);

connection.query('USE ' + dbconfig.database);

module.exports = {
 chkUsername: function(username, callback) {
        var queryString = "SELECT username FROM users WHERE username = ?";
        connection.query(queryString,[username], function(err, rows) {
            if (err)
                return done(err);
                if (rows.length) {
                    callback(false);
                } else {
                    callback(true);
                }
        });
    },

    chkMail: function(email, callback) {
        var queryString = "SELECT email FROM users WHERE email = ?";
        connection.query(queryString,[email], function(err, rows) {
            if (err)
                return done(err);
                if (rows.length) {
                    callback(false);
                } else {
                    callback(true);
                }
        });
    }
};

如果查询结果为false或true,我如何从file2.js回调到file1.js并打印?

使用回调非常重要,而不仅仅是返回true或false,因为我有另一个使用套接字和相同查询的文件。

1 个答案:

答案 0 :(得分:0)

你在回调函数中返回了一些东西,但是你实际上并没有用它做任何事情。 callback(true);将返回true,但之后您无法执行任何操作。你的意思是return callback(true);。同样适用于您执行callback(true)callback(false

的任何其他地方