@node-red/util.util

cloneMessage(msg) → {Object}

安全地克隆消息对象。这处理了不能克隆的 msg.req/msg.res 对象。

参数
名称 类型 描述
msg 任意

要克隆的消息对象

返回
类型
对象

克隆的消息

compareObjects(obj1, obj2) → {boolean}

比较两个对象,处理各种 JavaScript 类型。

参数
名称 类型 描述
obj1 任意
obj2 任意
返回
类型
布尔值

两个对象是否相同

encodeObject(msg, opts) → {Object}

将对象编码为 JSON,而不会丢失非 JSON 类型(如 Buffer 和 Function)的信息。

此函数与编辑器中的其反向函数紧密相关。

参数
名称 类型 描述
msg 对象
opts 对象
返回
类型
对象

编码后的对象

ensureBuffer(o) → {String}

使用依赖于类型的方法将提供的参数转换为 Buffer。

参数
名称 类型 描述
o 任意

要转换为 Buffer 的属性

返回
类型
字符串

Buffer 版本

ensureString(o) → {String}

使用依赖于类型的方法将提供的参数转换为 String。

参数
名称 类型 描述
o 任意

要转换为 String 的属性

返回
类型
字符串

字符串化版本

evaluateEnvProperty(value, node) → {String}

检查字符串是否包含任何环境变量指定符,并返回替换了其值的字符串。

例如,如果环境变量 `WHO` 设置为 `Joe`,则字符串 `Hello ${WHO}!` 将返回 `Hello Joe!`。

参数
名称 类型 描述
字符串

要解析的字符串

node 节点

评估属性的节点

返回
类型
字符串

解析后的字符串

evaluateJSONataExpression(expr, msg, callback) → {any}

评估 JSONata 表达式。表达式必须在使用此函数之前,使用 @node-red/util-util.prepareJSONataExpression 进行准备。

参数
名称 类型 描述
expr 对象

准备好的 JSONata 表达式

msg 对象

要评估的消息对象

回调 函数

(可选)在表达式评估时调用

返回
类型
任意

如果未提供回调,则为表达式的结果

evaluateNodeProperty(value, type, node, msg, callback) → {any}

根据其类型评估属性值。

参数
名称 类型 描述
字符串

原始值

类型 字符串

值的类型

node 节点

评估属性的节点

msg 对象

要评估的消息对象

回调 函数

(可选)在属性评估时调用

返回
类型
任意

如果未提供 `callback`,则为评估后的属性

generateId() → {String}

生成一个伪唯一随机 ID。

返回
类型
字符串

一个随机 ID

getMessageProperty(msg, expr) → {any}

获取消息对象的属性。

与 @node-red/util-util.getObjectProperty 不同,此函数如果存在,将从属性表达式的前面去除 `msg.`。

参数
名称 类型 描述
msg 对象

消息对象

expr 字符串

属性表达式

抛出

如果属性的 *父级* 不存在,则会抛出错误

返回
类型
任意

消息属性,如果不存在则为 undefined

getObjectProperty(msg, expr) → {any}

获取对象的属性。

给定对象

{
  "pet": {
      "type": "cat"
  }
}
  • `pet.type` 将返回 `"cat"`。
  • `pet.name` 将返回 `undefined`
  • `car` 将返回 `undefined`
  • `car.type` 将抛出错误(因为 `car` 不存在)
参数
名称 类型 描述
msg 对象

对象

expr 字符串

属性表达式

抛出

如果属性的 *父级* 不存在,则会抛出错误

返回
类型
任意

对象属性,如果不存在则为 undefined

normaliseNodeTypeName(name) → {String}

将节点类型名称规范化为驼峰命名法。

例如:`a-random node type` 将规范化为 `aRandomNodeType`

参数
名称 类型 描述
name 字符串

节点类型

返回
类型
字符串

规范化的名称

normalisePropertyExpression(str) → {Array}

解析属性表达式,例如 `msg.foo.bar[3]`,以验证它并将其转换为以属性名称数组表示的规范版本。

例如,`a["b"].c` 返回 `['a','b','c']`

如果提供了 `msg`,则任何内部交叉引用都将针对该对象进行评估。否则,它将返回一组嵌套的属性。

例如,在未设置 msg 的情况下,'a[msg.foo]' 返回 `['a', [ 'msg', 'foo'] ]`,但如果 msg 设置为 '{"foo": "bar"}',则 'a[msg.foo]' 返回 `['a', 'bar' ]`

参数
名称 类型 描述
str 字符串

属性表达式

返回
类型
数组

规范化的表达式

parseContextStore(key) → {Object}

解析由 TypedInput 生成的上下文属性字符串,以提取存储名称(如果存在)。

例如,`#:(file)::foo` 结果为 ` { store: "file", key: "foo" }`。

参数
名称 类型 描述
字符串

要解析的上下文属性字符串

返回
类型
对象

解析后的属性

prepareJSONataExpression(value, node) → {Object}

准备 JSONata 表达式以进行评估。这会将 Node-RED 特定的函数附加到表达式中。

参数
名称 类型 描述
字符串

JSONata 表达式

node 节点

评估属性的节点

返回
类型
对象

可以评估的 JSONata 表达式

setMessageProperty(msg, prop, value, createMissing)

设置消息对象的属性。

与 @node-red/util-util.setObjectProperty 不同,此函数如果存在,将从属性表达式的前面去除 `msg.`。

参数
名称 类型 描述
msg 对象

消息对象

prop 字符串

属性表达式

任意

要设置的值

createMissing 布尔值

是否创建缺失的父属性

setObjectProperty(msg, prop, value, createMissing)

设置对象的属性。

参数
名称 类型 描述
msg 对象

对象

prop 字符串

属性表达式

任意

要设置的值

createMissing 布尔值

是否创建缺失的父属性