javascript mysql和承诺
我在做承诺,或者至少在努力 以下是迄今为止我的代码外观:javascript mysql和承诺,javascript,node.js,Javascript,Node.js,我在做承诺,或者至少在努力 以下是迄今为止我的代码外观: checkEmailUsername = function(mail, user) { return new Promise(function(resolve, reject) { var query; query = "SELECT * FROM users WHERE email = ? OR username = ?"; return connection.query(query, [ma
checkEmailUsername = function(mail, user) {
return new Promise(function(resolve, reject) {
var query;
query = "SELECT * FROM users WHERE email = ? OR username = ?";
return connection.query(query, [mail, user], function(err, row, fields) {
if (err) {
reject(err);
}
console.log(row.length);
if (row.length > 0) {
return resolve(true);
} else {
return resolve(false);
}
});
}).then()["catch"]();
};
问题是。如何从承诺内部返回解析值?此处不能使用return,请使用承诺解析函数将db中的行返回给调用者
checkEmailUsername = function (mail, user) {
return new Promise(function (resolve, reject) {
var query;
query = "SELECT * FROM users WHERE email = ? OR username = ?";
connection.query(query, [mail, user], function (err, row, fields) {
if (err) {
reject(err);
}
console.log(row.length);
resolve(row);
});
};
checkEmailUsername(mail, user).then(function (rows) {
// do something with the rows
}).catch((err) => {
//handle error
}
}
这里不能使用return,请使用promise resolve函数将行从db返回给调用者
checkEmailUsername = function (mail, user) {
return new Promise(function (resolve, reject) {
var query;
query = "SELECT * FROM users WHERE email = ? OR username = ?";
connection.query(query, [mail, user], function (err, row, fields) {
if (err) {
reject(err);
}
console.log(row.length);
resolve(row);
});
};
checkEmailUsername(mail, user).then(function (rows) {
// do something with the rows
}).catch((err) => {
//handle error
}
}
为什么我不能console.log checkEmailUsername返回?现在,我从内部返回值。then()函数您不能从异步代码返回内容,当您尝试记录它时,结果还没有准备好,程序继续到下一行。当承诺已经解决时,您可以将其记录在“then”中。为什么我不能console.log checkEmailUsername return?现在,我从内部返回值。then()函数您不能从异步代码返回内容,当您尝试记录它时,结果还没有准备好,程序继续到下一行。当承诺已经解决时,您可以将其记录在“then”中。