diff --git a/flow-to-rtdb.js b/flow-to-rtdb.js index cbe3158..f661549 100644 --- a/flow-to-rtdb.js +++ b/flow-to-rtdb.js @@ -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) diff --git a/package.json b/package.json index cc58054..eaa3692 100644 --- a/package.json +++ b/package.json @@ -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": { diff --git a/rtdb-to-flow.html b/rtdb-to-flow.html index cb00f88..785d74d 100644 --- a/rtdb-to-flow.html +++ b/rtdb-to-flow.html @@ -7,6 +7,7 @@ name: {value:""}, flowId: {value:""}, path: {value:""}, + env_var: {value:""}, cred: {value: "", type: 'firebase-config'} }, inputs:1, @@ -45,6 +46,11 @@ +
+ + +
+
diff --git a/rtdb-to-flow.js b/rtdb-to-flow.js index 06df387..97eba2b 100644 --- a/rtdb-to-flow.js +++ b/rtdb-to-flow.js @@ -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)=>{