簡體   English   中英

node.js mariasql返回undefined

[英]node.js mariasql return undefined

我相信我的語法有問題。

通過函數xx,返回是未定義的:(。這里是一個文件中的問題。

var Client = require('mariasql');
var inspect = require('util').inspect;


var c = new Client();
    c.connect({
      host: '127.0.0.1',
      user: 'root',
      password: '38nudel5nu',
      db: 'artikel2'
});

var login = function(){

    console.log("LOGIN\n");

    c.on('connect', function() {
       console.log('Client connected');
     })
     .on('error', function(err) {
       console.log('Client error: ' + err);
     })
     .on('close', function(hadError) {
       console.log('Client closed');
     });
}

var end = function(){
    console.log("EXIT");
    c.end();
}


login();

var xx = function(){

c.query("SELECT COUNT(ArtikelID) AS Count FROM artikel")
 .on('result', function(res) {
   res.on('row', function(row) {
    return "YOLO";
   })
   .on('error', function(err) {
   })
   .on('end', function(info) {
   });
 })
 .on('end', function() {
 });

}

var autohaus = xx();

console.log("\n\n --> " + autohaus);

這是輸出:

[cseipel @ myhost testumgebung] $ node skript.js登錄

- >未定義客戶端已連接

您正在使用異步函數,就好像它是同步的一樣。 那不行。 您需要將回調傳遞給ArtikelCount函數並在獲得所需結果后調用回調(回調的典型約定是,如果發生錯誤,則第一個參數為錯誤,否則應為null )。

例:

var ArtikelCount = function(cb) {
    var count,
        error;
    c.query('SELECT COUNT(ArtikelID) AS Count FROM artikel')
    .on('result', function(res) {
        res.on('row', function(row) {
            count = row.Count;
        })
        .on('error', function(err) {
            console.log('Result error: ' + inspect(err));
            error = err;
        })
        .on('end', function(info) {
            console.log('Result finished successfully');
        });
    })
    .on('end', function() {
        console.log('Done with all results');
        cb(error, count);
    }); 
}

然后使用它像:

wc.ArtikelCount(function(err, count) {
  if (err)
    throw err;
  else
    console.log('Row count', count);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM