Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript mysql和承诺_Javascript_Node.js - Fatal编程技术网

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”中。