首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS:如何在创建MySQL操作完成之前停止代码执行

问NodeJS:如何在创建MySQL操作完成之前停止代码执行
EN

Stack Overflow用户
提问于 2016-09-08 10:25:45
回答 1查看 316关注 0票数 1

我有一个非常基本的场景,我正在NodeJS应用程序中对NodeJS进行创建操作调用。一旦我得到了创建操作的结果(成功或失败),我就必须执行一些代码。

但是现在由于NodeJS的异步行为,我的代码依赖于结果MySQL创建操作在MySQL创建操作返回结果之前执行。

这是我的密码

  1. calculation.js var = methods.executeQuery = mysql.createConnection({ host:"localhost",用户:"root",密码:“*”,数据库:“*”});//获取连接con.connect(函数(Err){ if(err){ console.log(“错误连接到Db”);返回;}console.log(“已建立连接”);});con.query(selectQuery,值,函数(err,行){ if(err)抛出err;console.log(行);结果=行;console.log(结果);返回结果;});} module.exports =方法;
  2. client.js var execute =INSERT=‘selectQuery = 'INSERT (用户名,密码)值(?,?);var值=’sohamsoham12 12‘,’sohamsoham12 12‘;var insertedRowInfo = execute.executeQuery(selectQuery,values);if(insertedRowInfo){ console.log("true");}selectQuery{console.log(假)};
EN

回答 1

Stack Overflow用户

发布于 2016-09-08 10:35:08

我不知道我是否正确地理解了你的问题(例如,什么是“创建操作”)。但是..。

您可以尝试以下解决方案:在connect成功回调中执行查询:

代码语言:javascript
复制
// getting connection and executing query
con.connect(function(err){
    if(err){
        console.log('Error connecting to Db');
        return;
    }
    console.log('Connection established');

    con.query(selectQuery, values, function(err,rows){
        if(err) throw err;
        console.log(rows);
        result = rows;
        console.log(result);
        return result; // this can't work... you should invoke a callback function, here...
    });
});

更新:在OP评论之后,我现在完全理解了这个问题.(对不起:-()

你只是错过了一点异步行为..。:-)

您只需将methods.executeQuery更改为

代码语言:javascript
复制
function(selectQuery, values) {
  ...
}

至

代码语言:javascript
复制
function(selectQuery, values, callback) {
  ...
}

然后,代替使用

代码语言:javascript
复制
return result;

你应该简单地使用

代码语言:javascript
复制
callback(err, result); // if any error occurred

或

代码语言:javascript
复制
callback(null, result); // if no error occurred

然后,在client.js中,当调用executeQuery方法时,而不是

代码语言:javascript
复制
var insertedRowInfo = execute.executeQuery(selectQuery, values);

你应该简单地做

代码语言:javascript
复制
execute.executeQuery(selectQuery, values, function(err, insertedRowInfo) {
  if (err) {
    // handle error
  } else {
    // handle success, using insertedRowInfo...
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39388507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档