0

这是我的代码:

var Maria = require('mariasql');

c = new Maria({
host: '127.0.0.1',
      user : 'root',
             password : 'maria',
                        db : 'gim'
});
c.query('SELECT * FROM contact WHERE id = ? AND nom = ?', [4, 'dupont'], function(err, rows) {
    if (err) {
        throw err;
    }
    else {
        function getResult() {
            return rows;
        }
    }
});

c.end();
//get overs file 
console.log(getResult());

我想要结果数据,但getResult()没有定义。

我怎样才能得到 node.js 的结果?

4

1 回答 1

0

好吧,您的代码有几个错误。

其中大部分与基本的 JS 编程概念有关。所以我会建议你去寻找一些 JS 课程或教程。

  • 当你定义getResult函数时,你是在函数的 clousure 中做的。这意味着,该函数只能在该函数内部访问。
  • 您声明该getResult函数的函数实际上是一个回调函数,该函数将在某些操作完成后立即执行,通常是 I/O 密集型操作。就像您从数据库中读取记录一样。
  • 当到达并执行最后一条语句时,您的查询没有返回,根据 node.js 非阻塞 I/O,程序的控制执行c.query...,这是您提供我们前面提到的回调的地方,因此它可以继续其余语句的执行,当c.query...返回记录时,执行回调作为结果。但到那时console.log...就会被处决。

我不确定这是否是一个可以理解的答案,部分原因是我试图解释的概念对于您使用的语言来说是非常基础的,所以我建议再一次从教程/课程开始. CodeSchool和许多其他网站上都有一些不错的。

于 2017-02-12T12:44:05.017 回答