我正在尝试为 Discord 平台创建一个机器人,它将搜索 SQL 数据库并将对象返回到聊天中供人们查看。
SQL 使用 Promise,但我无法成功地将它返回的 Promise 转换为我可以返回到聊天的内容(字符串或数组)。
此代码查询数据库:
function spell(name) {
var spellData = sql.get("SELECT * FROM spells WHERE LOWER(name) = '"+ name.toLowerCase() + "'");
spellData.then( value => {
console.log(spellData)
return spellData;
});
}
表格:
CREATE TABLE spells (
`name` VARCHAR(25),
`casting_time` VARCHAR(95),
`components` VARCHAR(215),
`description` VARCHAR(3307),
`duration` VARCHAR(52),
`level` INT,
`range` VARCHAR(28),
`school` VARCHAR(13)
);
我正在使用node.js、sqlite 和discord.js。
最佳答案
如果您想将 Promise
对象返回给调用者,只需执行以下操作:
function spell(name) {
return sql.get("SELECT * FROM spells WHERE LOWER(name) = '" + name.toLowerCase() + "'")
}
然后,在您的客户端中:
spell('some_name').then(function(result) { console.log(result); })
或者,如果您想等待
:
let results = await spell('some_name')
console.log(results)
不知道你是否在使用它,但 "parameterized queries"将防范 SQL 注入(inject)攻击。您选择的 NPM 包应该具有充分管理的实现。
关于javascript - 如何以字符串形式返回 promise 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51851643/