从阵列推送到 Azure 队列覆盖消息?[node.JS]
Push to Azure queue overwriting message from Array?[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 对象),但在队列中我只能看到房屋代码为 3 的一个对象。
有什么帮助吗?
你的问题出在这行代码
context.bindings.outputQueueError = (tabData[i]);
在循环的第一次迭代中,逻辑表达式为真,您将该值赋给 context.bindings.outputQueueError。然后,在最后一次迭代中,将该值分配给 context.bindings.outputQueueError.
看起来您需要将传递表达式的每个对象发送到迭代块内的 azure 队列,或者推送到 for 循环内的数组并将每个对象发送到其他地方的队列。
已修复使用消息数组
module.exports = function(context) {
context.bindings.myQueueItem = ["message 1","message 2"];
context.done();
};
我有一个数组,其中包含一些我想发送到 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 对象),但在队列中我只能看到房屋代码为 3 的一个对象。
有什么帮助吗?
你的问题出在这行代码
context.bindings.outputQueueError = (tabData[i]);
在循环的第一次迭代中,逻辑表达式为真,您将该值赋给 context.bindings.outputQueueError。然后,在最后一次迭代中,将该值分配给 context.bindings.outputQueueError.
看起来您需要将传递表达式的每个对象发送到迭代块内的 azure 队列,或者推送到 for 循环内的数组并将每个对象发送到其他地方的队列。
已修复使用消息数组
module.exports = function(context) {
context.bindings.myQueueItem = ["message 1","message 2"];
context.done();
};