arrays - 如何将基于 http 请求参数构建的自定义对象附加到 node-red 中的全局上下文数组?
问题描述
在 nodered 中,我想将 JSON 对象添加到存储在全局上下文对象中的数组中。
全局上下文初始化为
{
"lot":
{
"total":0,
"free":0,
"occupied":0,
"cams":[]
}
}
当一个 HTTP 请求发生时,我需要将一个对象添加到全局上下文中cams
。我尝试使用具有以下 JSONATA的change
节点来执行此操作:Set
context.lot.cams
$append(global.context.lot.cams,
{$string(msg.req.params.cam) :
{"total" : msg.req.body.totalLots,
"free" : msg.req.body.totalLots - msg.req.body.occupied,
"occupied" : msg.req.body.occupied}
}
)
但是,不是附加它,而是cams
用新元素覆盖数组。
如何将使用 http 请求参数构建的自定义对象附加到节点红色的全局上下文数组中?
解决方案
最简单的方法是使用 Function 节点。根据您分享的内容,以下内容可以做到:
var myData = global.get("context.lot.cams");
var newObj = {};
newObj[msg.req.params.cam] = {
"total" : msg.req.body.totalLots,
"free" : msg.req.body.totalLots - msg.req.body.occupied,
"occupied" : msg.req.body.occupied
};
myData.push(newObj);
global.set("context.lot.cams",newObj);
return msg;
推荐阅读
- vue.js - 仅使嵌套属性具有反应性
- pandas - 在 Pandas 中查找和替换循环
- hadoop - Jenkins 作为 Hadoop EdgeNode 上的 JobServer
- typescript - 如何检查 Typescript 中的哈希映射是否为空
- vb6 - 如何在 Dirlistbox vb6 中显示隐藏文件夹?
- java - 将菜单项的位置更改为左侧
- python - z3py:如何询问我的 adt 实例有哪个构造函数?
- mysql - 使用laravel中的事件更改数据库时如何向管理员发送通知
- sharepoint - Sharepoint Online REST API System.UnauthorizedAccessException 尝试获取 SiteGroup/Users 时
- sql - 扁平大查询行