所以我有两个文件
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,因为我有另一个使用套接字和相同查询的文件。
答案 0 :(得分:0)
你在回调函数中返回了一些东西,但是你实际上并没有用它做任何事情。 callback(true);
将返回true,但之后您无法执行任何操作。你的意思是return callback(true);
。同样适用于您执行callback(true)
或callback(false