【发布时间】:2020-10-27 14:13:57
【问题描述】:
我有一个文本区域,用户可以在其中输入以逗号分隔的单词。对于每个单词,我都会从我的 postgres 数据库中获得一个翻译(数据)。然后将输入以及来自数据库的翻译显示在一个表格中。
我的问题: 我需要在我的表中保持用户输入的顺序。但是顺序会根据我的数据库中单词的顺序自动更改。我尝试使用 ORDER BY,但无法修复。
有人能解释一下为什么订单会发生变化以及如何解决吗?非常感谢!
这是我的代码:
const getTranslation = async(req, res) => {
const params = typeof req.query.word === 'string' ? req.query.word : req.query.word.map((_, index) => `$${index + 1}`);
console.log(req.query.word);
const rawResults = await pool.query(
`SELECT "Translation", "Words" FROM "Dictionary" WHERE "Words" IN (${typeof req.query.word === 'string' ? '($1)' : params.join(
",")})`,
typeof req.query.word === 'string' ? [req.query.word] : req.query.word,
(error, result) => {
if (error) {
throw error;
}
res.status(200).json(result.rows);
console.log(result.rows);
}
);
const wordOrder = req.query.word.split(',');
rawResults.sort((row1, row2) => {
return wordOrder.indexOf(row1.Words) - wordOrder.indexOf(row2.Words);
})
}
/*terminal console.log(req.query.word) is ['yes', 'no']
terminal console.log(result.rows) is [ {'Translation': 'non', 'Words': 'no'}, {'Translation': 'oui', 'Words': 'yes'}] */
【问题讨论】:
标签: javascript sql postgresql input