準備工作
1磕潮、需要先安裝七牛云的官方sdk:
npm i qiniu
2、為了保證文件名稱的唯一性蛀柴,用到了node-red的一個 friendly-id 插件拉一,直接通過菜單安裝
開發(fā)
因為很多地方用到七牛云政勃,所以抽取出了一個子流程
先看下完整流程
friendly-id 節(jié)點生成唯一的 id唧龄,保存在 msg.uuid 屬性中
上傳七牛云 是個 function 節(jié)點,
-
首先在 Setup 中 引入 七牛sdk
image.png -
我把需要的配置信息寫到了 設置 奸远,每次部署節(jié)點時會執(zhí)行一次
image.png -
上傳的邏輯既棺,直接從qiniu的官方文檔復制過來稍微修改下
image.png
這里用的是 formUploader.put 直接把 req.req.file[0].buffer 上傳到七牛云
另外可以發(fā)現(xiàn)這里的function節(jié)點的代碼結構和之前的不太一樣,之前在代碼最后都是 return msg 懒叛, 但這里并沒有丸冕。
return msg 只適合用在同步處理后,直接把 msg 傳遞到下游節(jié)點
但在上傳七牛云時薛窥, formUploader.put 是個異步方法胖烛,只有在上傳完成的回調方法中,通過 node.send(msg) 往下游節(jié)點傳遞消息
當然也可以使用 async / await 的語法
return (async() =>{
const resp = await formUploader.put(...)
return msg
})()
小結
1诅迷、可以自行安裝插件佩番,function節(jié)點支持import,使用很方便
2罢杉、如果function節(jié)點有僅需要執(zhí)行一次的代碼趟畏,可以放到 設置中。比如全局配置信息可以單獨建立對應的function節(jié)點滩租,通過 global.set() 配置赋秀,在使用的時候通過 global.get() 讀取
3、異步處理可以用 node.send 傳遞消息律想,
4猎莲、可以正常使用 async / await 語法