mysql - 在方法外部获取变量执行查询MySQL?

标签 mysql node.js ibm-cloud watson-conversation

我正在使用 mysql 实现 Watson Conversation 服务,但我对 app.js 文件有疑问。当我将一个变量工作区放在一侧并得到它时,我会更改用户输入的变量。但是,当我实现寻求用户的查询时,我放置了一个全局变量来获取我为响应而调用的查询的值。这是代码:

if(payload.context.name!='undefined'&&payload.context.nam!='undefined'&&payload.context.nam==false){
    payload.context.nam=true;
    payload.context.name=payload.input.text;
    console.log('nam'+payload.context.nam);
    console.log('name'+payload.context.name);    var queryUsers="Select Nombre from conversation_mabe.usuarios where Nombre='"+payload.input.text+"';";


    con.query(queryUsers, function(err, results) {

        for (var i in results) {
          nombre=results[i].Nombre;
        }
        console.log('query'+nombre)
      });
      console.log('nombre'+nombre)
      if(nombre==payload.context.name&&nombre!='undefined'){
           return res.json({
            'output': {
              'text': 'Su usuario es  '+nombre+' en que le puedo ayudar?'
           }
         });
        }
      }

最佳答案

我不太明白你想做什么。看起来您正在使用用户输入的问题作为键在数据库中查找。

但是,关于 NodeJS 中的回调需要了解的一件事是它们发生在调用范围中的其余代码之后。

con.query(queryUsers, function(err, results) {

    for (var i in results) {
      nombre=results[i].Nombre;
    }
    console.log('query'+nombre)
  });
  console.log('nombre'+nombre)

第二个 console.log 将在查询回调函数被触发之前发生。如果您想用 nombre 执行某些操作,则需要在回调函数内执行此操作。

关于mysql - 在方法外部获取变量执行查询MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44684919/

相关文章:

node.js - Node 服务端口连接超时

mysql - 如何从数据库获取的图像数组中一次显示一张图像?

javascript - 如何从 spring data jpa 将值打印到用户界面?

php - 没有从 SQL 返回想要的结果

Mysql super 用户无法创建数据库,只能看到information_schema表

mysql - 如何将表结构从一个数据库复制到另一个数据库?

mysql - 如何将mysql数据库复制到未联网的机器上?

node.js - 将 IBM Conversation 连接到 Watson Workspace?

ios - 我可以在 Bluemix Advanced Mobile Access 服务中的何处为 iOS 应用程序指定 bundle ID?

go - IBM Cloud - Cloud Foundry App Go 部署失败