[英]How would I pass down a value to another function with nodejs?
所以,我試圖用 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
將您的代碼包裝在一個函數中以使其同步,參考
var deasync = require('deasync');
function syncFunc()
{
let arr;
client.countDB = function(discordID) {
db.each(`SELECT count(DiscordID) FROM verification WHERE DiscordID = ${discordID}`, function(err, row){
if(err){console.log(err); arr = null;return;}
const tmp = []
tmp.push(Object.values(row))
arr = tmp;
})
};
while((arr === undefined))
{
deasync.runLoopOnce();
}
return arr[0];
}
如果您有查詢中的數據,最簡單的方法是使用 promise。
client.countDB = function(discordID) {
return new Promise((resolve, reject) => {
db.each(`SELECT count(DiscordID) FROM verification WHERE DiscordID = ${discordID}`, function(err, row){
//if you want to throw as an error, reject promise with the incoming error as "reject(err)"
if(err){console.log(err); return resolve(0);}
arr.push(Object.values(row))
return resolve(arr[0]);
})
})};
// You can use this as
client.countDB('someId')
.then(data => console.log(data))
.catch(err => console.log(err));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.