【问题标题】:Push to Azure queue overwriting message from Array?[node.JS]从 Array 推送到 Azure 队列覆盖消息?[node.JS]
【发布时间】:2021-03-26 04:24:59
【问题描述】:

我有一个数组,其中包含一些我想发送到天蓝色队列的对象。 我有一个简单的数组,其中包含一些数据和一个 for,它通过数组的每个元素并将其推送到队列中。一切都很顺利,但是当我看到队列时,我只能找到数组的最后一个成员,而不是所有对象。

我的代码如下所示:

module.exports = async function (context, myQueueItem) {
var tabdata = []
tabdata =(
{housecode:1,car: 2, familymbembers:5,status:"Error"},{housecode:2,car: 5, familymbembers:4,status:"normal"},{housecode:3,car: 2, familymbembers:4,status:"Error"})


//does some other stuff


   for (let i = 0; i < tabData.length; i++) {
        if(tabData[i].status == "Error"){
            context.bindings.outputQueueError = (tabData[i]);

        }
        
    }
context.done();
}

如果我尝试在 context.bindings.output 之后打印对象,我可以看到 for 和 if 工作正常(我打印了数组中的 0 和 2 对象),但在队列中我可以看到只有一个具有房屋代码 3 的对象。

有什么帮助吗?

【问题讨论】:

    标签: node.js azure-functions azure-storage azure-queues


    【解决方案1】:

    你的问题在于这行代码

    context.bindings.outputQueueError = (tabData[i]);
    

    在循环的第一次迭代中,逻辑表达式为真,然后将该值分配给 context.bindings.outputQueueError。然后,在最后一次迭代中,将该值分配给 context.bindings.outputQueueError。

    看起来您需要将每个传递表达式的对象发送到迭代块内的天蓝色队列,或者推送到该 for 循环内的数组并将每个对象发送到其他地方的队列。

    【讨论】:

    • 你好,我用了另一种方法(发送消息数组),它有效,谢谢你的回答
    【解决方案2】:

    使用消息数组修复

    module.exports = function(context) {
        context.bindings.myQueueItem = ["message 1","message 2"];
        context.done();
    };
    

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 2020-09-28
      • 1970-01-01
      • 2014-01-28
      • 2022-12-19
      • 2019-11-08
      • 2021-10-18
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多