fir*_*167 4 javascript sqlite node.js promise discord.js
我正在尝试为不和谐平台创建一个机器人,它将搜索 SQL 数据库并将对象返回到聊天中供人们查看。
SQL 使用承诺,但我无法成功地将它返回的承诺转变为我可以返回到聊天的内容(字符串或数组)。
此代码查询数据库:
function spell(name) {
var spellData = sql.get("SELECT * FROM spells WHERE LOWER(name) = '"+ name.toLowerCase() + "'");
spellData.then( value => {
console.log(spellData)
return spellData;
});
}
Run Code Online (Sandbox Code Playgroud)
桌子:
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)
);
Run Code Online (Sandbox Code Playgroud)
我使用的是node.js、sqlite 和discord.js。
如果您想将Promise对象返回给调用者,只需执行以下操作:
function spell(name) {
return sql.get("SELECT * FROM spells WHERE LOWER(name) = '" + name.toLowerCase() + "'")
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的客户端中:
spell('some_name').then(function(result) { console.log(result); })
Run Code Online (Sandbox Code Playgroud)
或者,如果您喜欢await:
let results = await spell('some_name')
console.log(results)
Run Code Online (Sandbox Code Playgroud)
不知道你是否使用它,但“参数化查询”将防止 SQL 注入攻击。您选择的 NPM 包应该具有充分管理的实施。