从 Array 推送到 Azure 队列覆盖消息?[node.JS]
Posted
技术标签:
【中文标题】从 Array 推送到 Azure 队列覆盖消息?[node.JS]【英文标题】:Push to Azure queue overwriting message from Array?[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 的对象。
有什么帮助吗?
【问题讨论】:
【参考方案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();
;
【讨论】:
以上是关于从 Array 推送到 Azure 队列覆盖消息?[node.JS]的主要内容,如果未能解决你的问题,请参考以下文章
将结果从 RabbitMQ 队列推送到 CakePHP 前端