首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js mariasql返回未定义的

node.js mariasql返回未定义的
EN

Stack Overflow用户
提问于 2014-06-29 22:46:22
回答 1查看 633关注 0票数 3

我想我对句法有问题。

由函数xx返回的是未定义的:(。这里是一个文件中的问题。

代码语言:javascript
复制
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登录 ->未定义的客户端连接

EN

回答 1

Stack Overflow用户

发布于 2014-06-29 23:30:13

您使用的是异步函数,就好像它是同步的。那是行不通的。您需要将回调传递给您的ArtikelCount函数,并在得到所需的结果后调用回调(典型的回调约定是,如果发生错误,第一个参数是一个错误,否则应该是null)。

示例:

代码语言:javascript
复制
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);
    }); 
}

然后像这样使用它:

代码语言:javascript
复制
wc.ArtikelCount(function(err, count) {
  if (err)
    throw err;
  else
    console.log('Row count', count);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24480939

复制
相关文章

相似问题

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