如何解决node-postgres:带有“where in/any”的查询未执行
我有一个在 NodeJS 上运行的 JavaScript 应用程序。它基本上每 3 秒检查一次 API 并将一些内容写入 Postgres 数据库。我正在使用 node-postgres 与数据库交互。
代码
setInterval(dataObserver,3000);
function dataObserver() {
request(stateUrl,function (err,statusCode,data) {
if (err) {
log.message(data,"debug");
log.message('0: ' + err.message,"error");
} else {
try {
fightData = parseJson(data);
} catch (error) {
log.message('1: ' + error,"error");
}
matchCheck = fightData.remaining;
statusCheck = fightData.status;
setMatchType();
setMatchStatus();
if (matchStatus != oldStatus && matchType != 'Exhibition') {
oldStatus = matchStatus;
let redFighter = fightData.p1name;
let blueFighter = fightData.p2name;
let redBets = fightData.p1total;
let blueBets = fightData.p2total;
switch (matchStatus) {
case 'open':
break;
case 'locked':
break;
case 'redWon':
checkDatabase(redFighter,blueFighter);
setTimeout(function () {
addMatch(redFighter,blueFighter,redBets,blueBets,redFighter);
addMatchResults(redFighter,blueFighter);
addFavor(redFighter,blueBets);
},10000);
break;
case 'blueWon':
checkDatabase(redFighter,blueFighter);
addMatchResults(blueFighter,redFighter);
addFavor(redFighter,10000);
break;
default:
log.message('Unknown match status!',"error");
break;
}
}
}
})
};
// this is where the issue is
function checkDatabase(redFighter,blueFighter) {
console.log('checking database!');
db.query('select name from fightertable where name = any($1)',[[redFighter,blueFighter]],(err,res) => {
console.log('we are inside check database query');
if (err) {
log.message('2: ' + err.message,"error");
} else if (typeof res.rows[0] == 'undefined' && typeof res.rows[1] == 'undefined') {
addFighterName(redFighter,blueFighter);
} else if (res.rows[0].name == redFighter) {
addFighterName(blueFighter);
} else if (res.rows[0].name == blueFighter) {
addFighterName(redFighter);
} else {
log.message('Database check failed!',"error");
}
});
}
这一行永远不会被执行:
console.log('we are inside check database query');
但是这个console.log('checking database!');
可以!
我不知道为什么。我已经关注了 official Wiki,所以查询应该没问题。
更新:
我继续按照建议使用 Knex,但它仍然无法正常工作,在同一个地方!除非我搞砸了 knex 语法,但我再次遵循了文档。未命中第 3 行和第 4 行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。