提问者:小点点

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


我有一个数组,其中包含一些我想要发送到azure队列的对象。我有一个简单的数组,其中包含一些数据和一个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对象),但在队列中我只能看到一个house代码为3的对象。

有人帮忙吗?


共2个答案

匿名用户

您的问题在于这行代码

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

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

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

匿名用户

固定使用消息数组

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