Storage API

Storage API 提供了一种可插拔的方式来配置 Node-RED 运行时存储数据的位置。

API 存储的信息包括:

  • 流配置
  • 流凭证
  • 用户设置
  • 用户会话
  • 节点库内容

默认情况下,Node-RED 使用此 API 的本地文件系统实现。

此处记录了 API 函数。

配置

settings.js 中的属性可用于标识自定义模块 使用方法:storageModule

1
storageModule: require("my-node-red-storage-plugin")

约定

API 广泛使用了 JavaScript Promise

Promise 表示异步作的最终结果。在结果可用之前,它充当占位符。

Node-RED 使用 When.js 库。下面的示例显示了它的使用情况。有关更完整的示例,默认文件系统实现位于 red/runtime/storage/localfilesystem.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function getFlows() {
// create and return a promise
return when.promise(function(resolve,reject) {
// resolve - a function to be called with the successful result
// reject - a function to be called if an error occurs

// do some asynchronous work, with a callback on completion
doAsyncWork(function(err,result) {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
}

getFlows()
.then(function(result) {
// Called when getFlows completes successfully
})
.otherwise(function(err) {
// Called when getFlows hits an error
});

方法

存储插件是一个node.js模块,它在 module.exports

功能 描述
Storage.init(settings) 初始化存储系统
Storage.getFlows() 获取 Flow 配置
Storage.saveFlows(flows) 保存流配置
Storage.getCredentials() 获取流凭证
Storage.saveCredentials(credentials) 保存流凭证
Storage.getSettings() 获取用户设置
Storage.saveSettings(settings) 保存用户设置
Storage.getSessions() 获取用户会话
Storage.saveSessions(sessions) 保存用户会话
Storage.getLibraryEntry(type, name) 获取特定于类型的库条目
Storage.saveLibraryEntry(type, name, mata, body) 保存特定于类型的库条目

Storage.init(settings)

初始化存储系统。

参数 描述
settings 运行时设置

返回一个 Promise,该 Promise 在初始化存储系统时 resolve。

Storage.getFlows()

返回使用运行时流配置解析的 Promise。

Storage.saveFlows(flows)

参数 描述
flows 流配置对象可以序列化为 JSON。

返回一个 Promise,该 Promise 在保存流配置后解析。

Storage.getCredentials ()

返回使用运行时流凭证解析的 Promise。

Storage.saveCredentials(credentials)

参数 描述
credentials credentials 对象可以序列化为 JSON。

返回一个 Promise,该 Promise 在保存流凭证后解析。

Storage.getSettings()

返回一个 Promise,该 Promise 会随着用户设置而解析。

Storage.saveSettings(settings)

参数 描述
settings settings 对象可以序列化为 JSON。

返回一个 Promise,该 Promise 在保存设置后 resolve。

Storage.getSessions()

返回使用 sessions 对象解析的 Promise。

Storage.saveSessions(sessions)

参数 描述
sessions sessions 对象可以序列化为 JSON。

返回一个 Promise,该 Promise 在保存会话后 resolve。

库函数

注册库类型的节点允许用户在本地库中保存和检索内容。存储模块的以下功能用于访问此内容。

条目可能具有与之关联的元数据,例如,函数条目包含标识函数提供多少个输出的元数据。

Storage.getLibraryEntry(type, name)

参数 描述
type 库条目的类型,例如 flows、functions、templates
name 要返回的条目的路径名

返回一个 Promise,该 Promise 以结果解析。

如果 name 表示单个条目,则结果是该条目的内容。例如,函数的代码。

如果 name 表示逻辑目录,则结果是一个目录列表数组。数组的每个元素要么是一个字符串(表示可以浏览的子目录),要么是一个具有 fn 属性的对象,该属性提供条目的文件名,以及与该条目关联的任何其他元数据。

1
2
3
4
5
6
[ 'directory1',
'directory2',
{ fn: 'File-1.js', outputs: 3 },
{ fn: 'File-2.js', outputs: 1 },
{ fn: 'File-3.js', outputs: 2 }
]

Storage.saveLibraryEntry(type, name, meta, body)

参数 描述
type 库条目的类型,例如 flowsfunctionstemplates
name 条目的路径名
mata 一个对象,其中包含要与条目一起保存的其他元数据
body 条目的正文

返回一个 Promise,该 Promise 在保存条目后 resolve。

已弃用的库函数

在 0.10.7 版本之前,存储模块也使用了以下函数。

此接口的新实现不应实现这些函数。

如果存在它们以实现向后兼容性,则运行时将使用它们,但会在将其 type 参数设置为 'flows' 的情况下使用它们 getLibraryEntry/saveLibraryEntry 。

Storage.getAllFlows()

返回一个 Promise,该 Promise 解析为包含完整列表 Library 中的所有流。

Storage.getFlow(name)

返回解析为流内容的 Promise。

Storage.saveFlow(name, flow)

返回一个 Promise,该 Promise 在将 flow 保存到库时解析。