【发布时间】:2021-01-12 08:56:43
【问题描述】:
所以,我正在尝试用 discord js 和 sqlite3 做一个事情,但在过去的几个小时里我一直被困在这个问题上,我仍然不明白我将如何解决它。
client.countDB = function(discordID) {
const arr = [];
db.each(`SELECT count(DiscordID) FROM verification WHERE DiscordID = ${discordID}`, function(err, row){
if(err){console.log(err); return 0;}
arr.push(Object.values(row))
return arr;
})
return arr[0];
};
所以我试图获取仅在 db.each 中可用的数据,但我不知道如何将其传递出去,以便返回预期值。我已经尝试过使用全局变量,将其放在更大的范围内,但我仍然不知道该怎么做。
抱歉,我不习惯一直问问题。
编辑:应该说我正在使用npm sqlite3 模块。 https://www.npmjs.com/package/sqlite3
【问题讨论】:
-
你得到
undefinedarr[0] 的值了吗? -
这显然行不通,因为你的
return语句会在db.each的回调执行之前触发。我对 sqlite3 不熟悉,但必须有一种方法可以通过开箱即用的承诺来获得 db.each 的结果。如果没有,您将不得不自己承诺。 -
是的,正是我的想法,使用
async await,他们在github中提到github.com/mapbox/node-sqlite3确实是异步的。 -
它可能是异步的,但它在这里或API Docs 中没有提到它返回一个承诺,也没有提到如果没有通过回调它将返回一个承诺(通常是这种情况使用此类库)
-
@shubhamjha 抱歉回复晚了,但是是的,我得到了一个未定义的值
标签: javascript node.js sqlite