变量没有保留

时间:2017-11-04 09:56:51

标签: javascript node.js object

Alrighty。

我的问题在于Javascript对象itemListpriceList - 它们未正确保留在.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);
});

这是它输出的重要部分:

Outputs

我尝试过使用字符串代替Javascript对象,但它似乎也不喜欢它,并且输出相同。

5undefined部分应该与它上面的位相似,但它不会。

它可能与null部分有关吗?如果是,那是否意味着它不适用于true - false - undefined等?

2 个答案:

答案 0 :(得分:1)

删除参数itemListpriceList,您的代码应该没问题。

您在itemList函数中引用的.then实际上是SQL承诺解决的问题。

.then(() => {...});

答案 1 :(得分:1)

您正在使用全球范围的itemListpriceList,因此请勿在{{1​​}}的本地范围内重新定义它们。只需从then

中删除这些参数即可
then