当前位置: 首页 > 面试题库 >

如何使用Node从MySQL正确返回结果?

习华灿
2023-03-14
问题内容

在代码中

var stuff_i_want = '';
stuff_i_want = get_info(parm);

和功能get_info:

get_info(data){
      var sql = "SELECT a from b where info = data"
      connection.query(sql, function(err, results){
            if (err){ 
              throw err;
            }
            console.log(results[0].objid); // good
            stuff_i_want = results[0].objid;  // Scope is larger than function
            console.log(stuff_i_want); // Yep. Value assigned..
    }

在更大的范围内

stuff_i_want = null

关于返回mysql数据并将其分配给变量,我缺少什么?

=============根据Alex建议的新代码

var parent_id = '';
    get_info(data, cb){
          var sql = "SELECT a from b where info = data"
          connection.query(sql, function(err, results){
                if (err){ 
                  throw err;
                }
                return cb(results[0].objid);  // Scope is larger than function
    }

====正在使用新代码

 get_data(parent_recording, function(result){ 
    parent_id = result;
    console.log("Parent ID: " + parent_id); // Data is delivered
  });

然而

console.log("Parent ID: " + parent_id);

在函数外部的作用域中,parent_id为null


问题答案:

您将需要使用javascript进行异步调用和回调,这不是c#/ php等。

这是使用您的代码的示例:

function get_info(data, callback){

      var sql = "SELECT a from b where info = data";

      connection.query(sql, function(err, results){
            if (err){ 
              throw err;
            }
            console.log(results[0].objid); // good
            stuff_i_want = results[0].objid;  // Scope is larger than function

            return callback(results[0].objid);
    }
}


//usage

var stuff_i_want = '';

 get_info(parm, function(result){
    stuff_i_want = result;

    //rest of your code goes in here
 });

当您get_info依次调用此function(err, results)函数时,将调用connection.query,它接受一个回调(这就是
作用域,然后将范围传递给此回调,依此类推。

欢迎使用JavaScript回调地狱…

当您掌握它时很容易,只是需要一点点习惯,就来自C#之类的东西



 类似资料:
  • 问题内容: 我有一个存储过程,它检查用户是否已经存在,无论用于电子邮件的输入是什么,它随数据库的第一行一起返回。如果我手动运行select语句,我将得到正确的结果。有什么建议吗? 问题答案: 您的问题无疑在这里: 白衣 您的参数名称与列名称相同。这 可 实际工作,但规则使它这样做可能是怪异。(我认为,如果您更改引号,它可能会起作用)。 但是实际上,您应该做的是将参数重命名为其他名称:

  • 问题内容: 我在使用flask.jsonify函数从字典输入中输出格式化的json响应时遇到了一些麻烦,如此处所述。 我的代码似乎正在返回Response对象,而不是我想要的格式化json对象。 我有 其中dict是从调用函数返回的字典对象。 在我的模板中,我有: 显示如下: 我该如何返回我要寻找的json表示形式? 问题答案: 你可以像这样使用json.dumps: 然后将其格式化为模板,如下所

  • 我正在使用postgis计算两个地理坐标之间的距离。 它返回给我53536.743496517米,大约等于54公里,但实际距离是103公里,我通过http://boulter.com/gps/distance/ 我在询问中是否做错了什么?

  • 我正在尝试在代码中使用NSPredicate搜索名称。搜索工作正常,但不会返回适当的结果。当我搜索一个名称(例如“Colin”)时,它会返回表中的所有其他名称或另一个名称(例如“Mike”),但如果我输入一个不存在的随机字符串,它会返回:“找不到结果”。当我在搜索栏中键入一个名字(例如Lisa)时,我希望它能找到这个名字(Lisa)并返回它,但它没有这样做 这是我的代码: 自己name返回表中的所

  • 情况: > 在按钮上的第一个片段,我想打开带有部分的第二个片段 在第二个片段上,我可以创建新部分(或使用已存在的),然后在列表项上单击打开第三个片段 在第三个片段上,我可以编写新服务(或使用已存在的服务),然后单击按钮返回第一个片段 并显示部分(来自第二个片段)和服务(来自第三个片段) 我的想法是使用片段。在第二个片段上设置参数(bundle),并将其传输到第三个片段 我应该如何正确地将变量从Al

  • 问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一