【发布时间】:2020-09-10 03:51:00
【问题描述】:
我正在尝试使用 SQLite3 为我的不和谐机器人(在 node.js 上)创建一个小型数据库,并且我想创建一个函数,用提供的值更新数据库(这部分有效)或返回一个值数据库。
我的问题在这里,返回的值总是未定义...
我知道 SQLite3 命令是异步的,所以所有的函数都变成了异步的,但是我怎样才能确保返回的值不再是未定义的呢?
这是我的代码:
const sqlite3 = require('sqlite3');
const dbname = 'dbStocks';
module.exports = function gestionBDD(update, nomArticle, quantitéArticle) {
console.log('1 ' + quantitéArticle);
let db = new sqlite3.Database(dbname, (err) => {
if (err) throw err;
console.log('Démarrage de ' + dbname);
});
db.serialize(() => {
nomArticle = '"' + nomArticle + '"';
if (update) {
//Si update est true : maj des quantités via le tableau articles
db.run(
`UPDATE stocks
SET Quantité = (` +
quantitéArticle +
`)
WHERE Article = (` +
nomArticle +
`)`
);
} else if (!update) {
db.each(
`SELECT Quantité FROM stocks WHERE Article = (` + nomArticle + `)`,
(err, data) => {
console.log('2 ' + data.Quantité);
return data.Quantité;
}
);
}
console.log('4 ' + quantitéArticle);
db.close((err) => {
if (err) throw err;
console.log('Arrêt de ' + dbname);
});
});
};
我得到了这个结果:
1 undefined
4 undefined
3 undefined
Démarrage de dbStocks
2 500
Arrêt de dbStocks
(3 undefined 是我的index.js 中的console.log(),其中我的函数gestionBDD 被调用)
【问题讨论】:
标签: javascript node.js discord discord.js node-sqlite3