2017-02-12 44 views
0
的NodeJS这

是我的代码:怎么弄resultat MariaDB的

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结果?

+0

也许:'rows = c.query(... return rows ...);'? –

回答

0

那么你的代码有几个错误。

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

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

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

0

感谢答复,我是小白在javascript节点

When you define getResult function, you're doing it inside of a function's clousure. Which means that, this function will be only accessible inside that function. 

是可访问的,如果我们使用全局变量?

对象C有attribut

console.log(c);

Client { 
    domain: null, 
    _events: {}, 
    _eventsCount: 0, 
    _maxListeners: undefined, 
    _handle: ClientBinding {}, 
    _config: { host: '127.0.0.1', user: 'root', password: 'maria', db: 'gim' }, 
    _req: undefined, 
    _queue: 
    [ { cb: [Function], 
     result: undefined, 
     results: undefined, 
     metadata: undefined, 
     str: 'SELECT * FROM contact WHERE id = \'4\' AND nom = \'dupont\'', 
     needColumns: true, 
     needMetadata: false, 
     rowBuilder: undefined } ], 
    _queryCache: 
    LRUCache { 
    _max: 30, 
    _lengthCalculator: [Function: naiveLength], 
    _allowStale: false, 
    _maxAge: null, 
    _dispose: [Function: EMPTY_LRU_FN], 
    _cache: { 'SELECT * FROM contact WHERE id = ? AND nom = ?': [Object] }, 
    _lruList: { '0': [Object] }, 
    _mru: 1, 
    _lru: 0, 
    _length: 1, 
    _itemCount: 1 }, 
    _handleClosing: false, 
    _tmrInactive: undefined, 
    _tmrPingWaitRes: undefined, 
    connecting: true, 
    connected: false, 
    closing: true, 
    threadId: undefined, 
    _firstQuery: 
    { str: 'SELECT CONNECTION_ID()', 
    cb: [Function: cb], 
    result: undefined, 
    results: undefined, 
    needMetadata: false, 
    needColumns: false } } 

是不可能直接在属性objet客户端注入数据?

c.query('SELECT * FROM contact WHERE id = ? AND nom = ?', [ 4, 'dupont' ], function(err, rows) { 
    if (err){ 
    throw err; 
    }else{ 
    c.results = function(err,rows){ 
     return rows; 
    } 
    } 
});