added environment variables to control updates of flows

This commit is contained in:
Peter Svensson
2019-06-23 20:59:10 +02:00
parent 0af1a1b15a
commit 8b0ee83c8c
4 changed files with 22 additions and 5 deletions

View File

@ -19,6 +19,7 @@ module.exports = function(RED) {
console.log('flow-to-rtdb path='+this.path+', flowId='+this.flowId)
runtime.flows.getFlow({id: this.flowId}).then((flow)=>{
flow.updated_at = Date.now()
this.admin.database().ref(this.path).set(flow).then((res)=>{
console.log('firebase set result '+res)
console.dir(res)

View File

@ -1,6 +1,6 @@
{
"name": "node-red-contrib-firebase-admin",
"version": "1.0.4",
"version": "1.0.5",
"description": "A node-red module that wraps the server-side admin SDK of firebase, firestore, et.c.",
"main": "index.js",
"scripts": {

View File

@ -7,6 +7,7 @@
name: {value:""},
flowId: {value:""},
path: {value:""},
env_var: {value:""},
cred: {value: "", type: 'firebase-config'}
},
inputs:1,
@ -45,6 +46,11 @@
<input type="text" id="node-input-path" placeholder="Path">
</div>
<div class="form-row">
<label for="node-input-env_var"><i class="icon-tag"></i> Environment variable to allow update</label>
<input type="text" id="node-input-env_var" placeholder="Env var">
</div>
<div class="form-row">
<label for="node-input-cred"><i class="icon-tag"></i> Credentials</label>
<input type="text" id="node-input-cred" placeholder="Credentials">

View File

@ -10,10 +10,20 @@ module.exports = function(RED) {
const cb = (res)=>{
//console.log('firebase get result '+res)
//console.dir(res)
let val = res.val()
runtime.flows.updateFlow({id: val.id, flow: val})
//console.log('val='+val)
node.send({payload:val})
if(config.env_var && process.env[config.env_var]){
let val = res.val()
runtime.flows.getFlow({id: val.id}).then((flow)=>{
console.log('rtdb-to-flow old flow updated_at = '+flow.updated_at+' new flow updated_at = '+val.updated_at)
if(!flow.updated_at || val.updated_at > flow.updated_at){
console.log('updating flow...')
runtime.flows.updateFlow({id: val.id, flow: val})
}
//console.log('val='+val)
node.send({payload:val})
})
} else {
console.log('skipping flow update because environment variable '+config.env_var+' was either not defined or not set to true')
}
}
let setUpListener = (path)=>{