Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 有没有办法通过node.js知道mysql表中是否存在行?_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 有没有办法通过node.js知道mysql表中是否存在行?

Javascript 有没有办法通过node.js知道mysql表中是否存在行?,javascript,mysql,node.js,Javascript,Mysql,Node.js,我试图使一个函数在检测到nodejs中某个特定列中包含值的行时返回true 我尝试使用查询中的结果变量,但没有成功: let rowexists = (mystring) => { let exists = false; let sql = "SELECT EXISTS( SELECT 1 FROM mytable WHERE `mycolumn` = '" + mystring + "')"; connection.query(sql, function(err

我试图使一个函数在检测到nodejs中某个特定列中包含值的行时返回true

我尝试使用查询中的结果变量,但没有成功:

let rowexists = (mystring) => {
    let exists = false;
    let sql = "SELECT EXISTS( SELECT 1 FROM mytable WHERE `mycolumn` = '" + mystring + "')";

    connection.query(sql, function(error, result, field){
        console.log((result[sql]));
        console.log(exists);
        exists = (result[sql]);
    });
    return exists;
}

console.log(rowexists("myvalue"));
事件如果有一行的值为myvalue,则rowexists始终返回false

重要编辑: 我的问题不是这是异步的,而是两者都是异步的

console.log((result[sql]));


返回未定义。

承诺在这种情况下很有用

您遇到的问题是,在函数返回时,您的查询尚未完成运行。因此,在返回承诺后,我们可以稍后返回值

旁注:使用SQL数据库时应使用

使用异步/等待的自调用函数:

如果不喜欢then语法,可以使用async/await。以下是两种方法,您可以这样做:

使用异步/等待的基本函数:


可能的重复不仅是异步响应,而且。。。结果[选择存在从mytable中选择1,其中`mycolumn`='+mystring+']???还包括console.logresult[sql];行有语法错误括号未闭合。结果是一个行数组,因此第一行的结果应为[0],第一行的结果应为[0]['mycolumn']。不确定为什么要检查现有记录您的目标是什么?我假设你想在获取它之前进行检查,这意味着你正在运行两个查询。我用promises尝试了你的代码,但它仍然取决于我演示的三种风格,你使用了哪种风格?第一种是promises,但这不是我真正的主要问题,我编辑了我的帖子来澄清
console.log(exists);
let rowexists = (mystring) => {
  // Return a new promise
  return new Promise(resolve => {
    // Create the sql query (this uses placeholders)
    // Hard coded values don't need to be placeholders but just for example:
    let sql = "SELECT 1 FROM ?? WHERE ?? = ?";
    // Query the database replacing the ?? and ? with actual data
    connection.query(sql, ['mytable', 'mycolumn', mystring], function(error, result, field){
      // Result will either be undefined or a row.
      // Convert it to a boolean and return it.
      resolve(!!result)
    });
  });
}

// Get the data
rowexists("myvalue").then(result => console.log(result))
(async function() {
  let exists = await rowexists('myothervalue')
  console.log(exists)
  // The rest of your related code
})()
async function test() {
  let exists = await rowexists('mythrirdvalue')
  console.log(exists)
  // The rest of your related code
}

test()