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 |
布尔值
|
是否创建缺失的父属性 |