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

Nodejs MySQL连接查询返回值以调用函数

方璞
2023-03-14
问题内容

我正在尝试从数据库中获取价值。用一个演示示例进行尝试。但是我在使用回调函数尝试同步调用时遇到问题。我是node.js的初学者,所以不知道这是否正确。

文件1:app.js

var data;

var db = require('./db.js');

var query = 'SELECT 1 + 1 AS solution';

var r = db.demo(query, function(result) { data = result; });

console.log( 'Data : ' + data);

文件2:db.js

var mysql      = require('./node_modules/mysql');

var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'root',
});

module.exports.demo = function(queryString, callback) {
    try {
        connection.connect();
        console.log('Step 1');

        connection.query(queryString, function(err, rows, fields) {
            console.log('Step 2');
            if (err) {
                console.log("ERROR : " + err);
            }
            console.log('The solution is: ', rows[0].solution);

            callback(rows[0].solution);

            return rows[0].solution;
        });
        callback();

        connection.end();
        console.log('Step 3');
    }
    catch(ex) {
        console.log("EXCEPTION : " + ex);
    }
};

输出:

Step 1
Step 3
Data : undefined
Step 2
The solution is:  2

问题答案:

问题是这样的:

var r = db.demo(query, function(result) { data = result; });

console.log( 'Data : ' + data);

console.log将运行回调函数被调用之前,因为db.demo异步的,这意味着它可能需要一些时间来完成,但所有的,而代码的下一行,console.log将被执行。

如果要访问结果,则需要等待回调函数被调用:

var r = db.demo(query, function(result) { 
  console.log( 'Data : ' + result);
});

这是大多数处理I / O的代码将在Node中起作用的方式,因此了解它很重要。



 类似资料:
  • 问题内容: 我想创建一个使用查询来计算值的函数,但返回值时遇到问题: 简而言之,我的查询是: 我收到一个SQL语法错误。 SQL错误(1064):您的SQL语法有错误; 问题答案: 假设这些都是通用名称(表将不是一个很好的表名),问题是您不能使用==进行比较。您还缺少一些关键语法(DECLARE,SELECT INTO等)。 更改为此: MySQL比较函数和运算符 相关问题:MYSQL中的单等于

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是

  • 问题内容: 我如何使这个小功能“ imageExists”返回ajax请求是否成功? 问题答案: 我相信您将必须使用同步模式并使用单独的变量来存储返回值。

  • 我想在php上创建一个函数,它将返回数组中sql查询的值。函数中的sql ode可以工作,我可以显示值。 但是当我想在一个函数中使用它时,它就不起作用了。我的语法中有什么错误?

  • 问题内容: 谁能告诉我如何将值作为函数的返回值返回。 当您点击注册表格中的提交时,上述功能就会触发(很明显)。问题是,无论响应是什么,此表单都将提交,并且警告框有时不显示任何内容(空白),有时根本不显示。但是,如果我将结尾更改为手动[即用] 替换,则正确的值将显示在警报框中。 PS我比JavaScript的菜鸟还差,因此也欢迎提出一般性改进代码的建议。 问题答案: 问题是,直到……等待……状态改变

  • 问题内容: 除了使用关键字调用构造函数时,Java语言中的语句可以返回值的确切情况是什么? 例: 如果我没记错的话,如果它是一个非函数原语,将被返回。否则返回。这个对吗? 换句话说,什么值可以引起? 问题答案: 确切的条件在内部属性上进行了描述,该属性由操作员使用: 来自ECMA-262第3条。版本规格: 13.2.2 调用对象的属性时,将执行以下步骤: 创建一个新的本机ECMAScript对象。