javascript - 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, blueFighter, redBets, blueBets);
}, 10000);
break;
case 'blueWon':
checkDatabase(redFighter, blueFighter);
setTimeout(function () {
addMatch(redFighter, blueFighter, redBets, blueBets, blueFighter);
addMatchResults(blueFighter, redFighter);
addFavor(redFighter, blueFighter, redBets, blueBets);
}, 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!');
可以!
我不确定为什么。我已经关注了官方 Wiki,所以查询应该没问题。
更新:
我继续按照建议使用了 Knex,但它仍然无法正常工作,在同一个地方!除非我搞砸了 knex 语法,但我再次遵循了文档。第 3 行和第 4 行未命中。
解决方案
推荐阅读
- python - 为什么这组简单的连接会返回意外包装的结果?
- r - 如何从R中的对创建链
- excel - 从excel文件vba循环文件夹名称
- docker - 在 dockerfile 中从 github 安装 jenkins 插件
- c# - 我需要在 Identity Server 自定义登录页面的“用户名”字段中填充当前用户名
- mysql - 如何使用安装在 Windows 本地 xampp 上的 mysql 连接到我的数据库 URL(从 heroku 检索)
- go - 我可以列出所有标准的 Go 包吗?
- java - 具有不可见构造函数的公共类可以由另一个包中的类扩展吗?
- typescript - 为什么 ESLint 会为 TypeScript 接口抛出“no-unused-vars”?
- pyspark - databricks delta 在哪里存储它的元数据?