Alrighty。
我的问题在于Javascript对象itemList
和priceList
- 它们未正确保留在.then()
部分。
以下是我遇到问题的部分:
var stmt = `SELECT * FROM SRV${msg.guild.id}`;
var itemList = {};
var priceList = {};
var num = -1;
sql.each(stmt, function(err, row) {
num++
if(row.items!="ITEMS") { itemList[num] = row.items; }
if(row.prices!="PRICES") { priceList[num] = row.prices; }
console.log("---------\n" + JSON.stringify(itemList, null, 4) + "\n" + JSON.stringify(priceList, null, 4));
})
.then((itemList, priceList) => {
console.log("----E----\n" + JSON.stringify(itemList, null, 4) + "\n" + JSON.stringify(priceList, null, 4) + "\n----E----");
let cmd = require("./itemsPROCESS.js");
cmd.run(transfer, msg, args, itemList, priceList);
});
这是它输出的重要部分:
我尝试过使用字符串代替Javascript对象,但它似乎也不喜欢它,并且输出相同。
5
和undefined
部分应该与它上面的位相似,但它不会。
它可能与null
部分有关吗?如果是,那是否意味着它不适用于true
- false
- undefined
等?
答案 0 :(得分:1)
删除参数itemList
和priceList
,您的代码应该没问题。
您在itemList
函数中引用的.then
实际上是SQL承诺解决的问题。
.then(() => {...});
答案 1 :(得分:1)
您正在使用全球范围的itemList
和priceList
,因此请勿在{{1}}的本地范围内重新定义它们。只需从then
then