javascript - 如何以字符串形式返回 promise 的结果?

标签 javascript node.js sqlite promise discord.js

我正在尝试为 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/

相关文章:

sql - 是否可以在一个SQL查询中选择它?

android - 无法从数据库加载图像;只显示网址

javascript - Redux - 组件不使用 connect() 重新渲染

javascript - 将 JQuery ReplaceWith 与 JavaScript 变量结合使用

stdin - node.js:从标准输入读取同步?

javascript - 将路线从 app.js 移至 Route.js 并且应用程序不再工作

javascript - 禁用 jQueryUI Sortable 项目在特定区域被删除

javascript - Phonegap 检测手机是否处于事件状态

javascript - Sendgrid:渲染 ejs 模板,然后作为电子邮件发送。

android - 使用 root 访问权限在 Android 6.0+ 中修改另一个应用程序的 SQLite 数据库