繁体   English   中英

从数组推送到 Azure 队列覆盖消息?[node.JS]

[英]Push to Azure queue overwriting message from Array?[node.JS]

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

我的代码如下所示:

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 object),但在队列中我只能看到一个object,房屋代码为 3。

有什么帮助吗?

你的问题在于这行代码

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

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

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

使用消息数组修复

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM