我已经在这几个小时了。
我有以下函数,它从我的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);
};
});
});
}
}
这一整天真的很挣扎,所以感谢任何帮助。
我还在学习。在上周之前,如果这是业余时间,我从未编写过如此道歉的信息。
答案 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);
}
});
});
}