最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

返回node

IT培训 admin 3浏览 0评论

返回node

我正在尝试返回node-postgres查询的结果并将其存储在变量中。我可以很好地管理console.log,但是找不到返回结果的方法,以便可以在查询方法之外进行访问。我茫然不知所措,并且知道我一定会丢失一些显而易见的东西(或多项明显的东西),因为如果不可能做到这一点,我将不了解node-postgres的意义,因为我将永远能够做到要做的就是将我的结果记录到控制台。

我已经尝试过下面的代码以及使用promises的版本,并且都收到相同的结果'undefined'。 else内的console.log可以正常工作,但返回值不能使其余功能可以访问结果。在下面的代码中,我的返回将以“ undefined”的形式返回,就像在console.log处一样。

var selectFrom = function(data, table, condition) {
    var queryResult;
    pool.query(`SELECT ${data} FROM ${table} ${condition}`, function(err, result) {
        if(err) { console.log(err); }
        else { queryResult = result.rows[0][data]; }
    })
    pool.end();
    return queryResult;
}

var result = selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`);
console.log(result);
回答如下:

您需要使用回调:

var selectFrom = function(data, table, condition, callback) {

    pool.query(`SELECT ${data} FROM ${table} ${condition}`, function(err, result) {
        if(err)
            return callback(err);
        callback(null, result.rows[0][data]);
    })
    pool.end();
}

selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`, function(err, result){
    console.log(err, result);   
});

或承诺:

var selectFrom = function(data, table, condition) {
    return new Promise(function(resolve, reject){
        pool.query(`SELECT ${data} FROM ${table} ${condition}`, function(err, result) {
            if(err)
                return reject(err);
            resolve(result.rows[0][data]);
        })
        pool.end();
    });
}

selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`)
.then(function(result){
    console.log(result);    
}).catch(function(err){
    console.log(err);   
});

返回node

我正在尝试返回node-postgres查询的结果并将其存储在变量中。我可以很好地管理console.log,但是找不到返回结果的方法,以便可以在查询方法之外进行访问。我茫然不知所措,并且知道我一定会丢失一些显而易见的东西(或多项明显的东西),因为如果不可能做到这一点,我将不了解node-postgres的意义,因为我将永远能够做到要做的就是将我的结果记录到控制台。

我已经尝试过下面的代码以及使用promises的版本,并且都收到相同的结果'undefined'。 else内的console.log可以正常工作,但返回值不能使其余功能可以访问结果。在下面的代码中,我的返回将以“ undefined”的形式返回,就像在console.log处一样。

var selectFrom = function(data, table, condition) {
    var queryResult;
    pool.query(`SELECT ${data} FROM ${table} ${condition}`, function(err, result) {
        if(err) { console.log(err); }
        else { queryResult = result.rows[0][data]; }
    })
    pool.end();
    return queryResult;
}

var result = selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`);
console.log(result);
回答如下:

您需要使用回调:

var selectFrom = function(data, table, condition, callback) {

    pool.query(`SELECT ${data} FROM ${table} ${condition}`, function(err, result) {
        if(err)
            return callback(err);
        callback(null, result.rows[0][data]);
    })
    pool.end();
}

selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`, function(err, result){
    console.log(err, result);   
});

或承诺:

var selectFrom = function(data, table, condition) {
    return new Promise(function(resolve, reject){
        pool.query(`SELECT ${data} FROM ${table} ${condition}`, function(err, result) {
            if(err)
                return reject(err);
            resolve(result.rows[0][data]);
        })
        pool.end();
    });
}

selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`)
.then(function(result){
    console.log(result);    
}).catch(function(err){
    console.log(err);   
});

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论