node.js else if语句问题,关闭但没有雪茄

时间:2017-08-24 20:23:26

标签: javascript node.js

我已经在这几个小时了。

我有以下函数,它从我的postgres db中的表中读取。如果列中存储了字符串,它将按预期工作。

如果'我无法获得其他'语句在字段中没有字符串时工作。为了测试这一点,我在brand_code下有一个完全空的列,它仍在执行' else'言。

现在,我知道为什么。表格中有3行。当我将else if改为=== 3时,它就像我一样。

如果'我需要使用什么代码来制作'否则如果字段为空,语句工作? (我计划稍后扩展SELECT语句)。

readCodes: function(callback) {
      var pool = new pg.Pool(config.PG_CONFIG);
      pool.connect(function(err, client, done) {
          if (err) {
              return console.error('Error acquiring client', err.stack);
          }
          client
              .query(
                  'SELECT brand_code FROM public.voucher_codes',
                  function(err, result) {
                    if (err) {
                        console.log(err);
                        callback('');
                      } else if (result.rows.length === 0 ) {
                        console.log(result);
                        callback('');
                      } else {
                          let codes = [];
                          for (let i = 0; i < result.rows.length; i++) {
                              codes.push(result.rows[i]['brand_code']);
                          }
                          callback(codes);
                      };
                  });

      });
    }

}

这一整天真的很挣扎,所以感谢任何帮助。

我还在学习。在上周之前,如果这是业余时间,我从未编写过如此道歉的信息。

1 个答案:

答案 0 :(得分:0)

这里的问题是你正在检查它是否已经返回行,你需要而不是检查每一行如果字段为空

我建议使用下划线来迭代每一行:

_.each(result.rows,function(element, index){
  if(element['brand_code'].length != 0){
     codes.push(element['brand_code'])
  }else{
     console.log('empty field @ results['+index+']')
  }
})

代码:

readCodes: function(callback) {
  var pool = new pg.Pool(config.PG_CONFIG);
  pool.connect(function(err, client, done) {
  if(err){return console.error('Error acquiring client',err.stack);}
  client.query(
    'SELECT brand_code FROM public.voucher_codes',
    function(err, result) {
     if (err){console.log('[!] Error:',err); callback('');} 
     else if(result.rows.length == 0 ){
       console.log('[!] Error:','No rows returned!');
       callback('');
     } else {
       let codes = [];
       _.each(result.rows,function(element, index){
        console.log(element , index)
        if(element['brand_code'].length != 0){
          codes.push(element['brand_code'])
        }else{
          console.log('empty field @ results['+index+']')
        }
       })                        
       callback(codes);
     }
    });
  });
}