准备工作
1、需要先安装七牛云的官方sdk:
npm i qiniu
2、为了保证文件名称的唯一性,用到了node-red的一个 friendly-id 插件,直接通过菜单安装
开发
因为很多地方用到七牛云,所以抽取出了一个子流程
先看下完整流程
friendly-id 节点生成唯一的 id,保存在 msg.uuid 属性中
上传七牛云 是个 function 节点,
-
首先在 Setup 中 引入 七牛sdk
-
我把需要的配置信息写到了 设置 ,每次部署节点时会执行一次
-
上传的逻辑,直接从qiniu的官方文档复制过来稍微修改下
这里用的是 formUploader.put 直接把 req.req.file[0].buffer 上传到七牛云
另外可以发现这里的function节点的代码结构和之前的不太一样,之前在代码最后都是 return msg , 但这里并没有。
return msg 只适合用在同步处理后,直接把 msg 传递到下游节点
但在上传七牛云时, formUploader.put 是个异步方法,只有在上传完成的回调方法中,通过 node.send(msg) 往下游节点传递消息
当然也可以使用 async / await 的语法
return (async() =>{
const resp = await formUploader.put(...)
return msg
})()
小结
1、可以自行安装插件,function节点支持import,使用很方便
2、如果function节点有仅需要执行一次的代码,可以放到 设置中。比如全局配置信息可以单独建立对应的function节点,通过 global.set() 配置,在使用的时候通过 global.get() 读取
3、异步处理可以用 node.send 传递消息,
4、可以正常使用 async / await 语法