diff --git a/package.json b/package.json index 1b3b2e0..6546b62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-red-contrib-firebase-admin", - "version": "1.0.2", + "version": "1.0.3", "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-get.html b/rtdb-get.html index 7de3d5b..989729b 100644 --- a/rtdb-get.html +++ b/rtdb-get.html @@ -5,6 +5,7 @@ color: '#a6bbcf', defaults: { name: {value:""}, + path: {value:""}, cred: {value: "", type: 'firebase-config'} }, inputs:1, @@ -38,6 +39,11 @@ +
+ + +
+
diff --git a/rtdb-get.js b/rtdb-get.js index bee48ed..edf0699 100644 --- a/rtdb-get.js +++ b/rtdb-get.js @@ -3,31 +3,47 @@ let oldpath module.exports = function(RED) { + function FirebaseAdmin(config) { RED.nodes.createNode(this, config); var node = this; + const cb = (res)=>{ + //console.log('firebase get result '+res) + //console.dir(res) + let val = res.val() + //console.log('val='+val) + node.send({payload:val}) + } + + let setUpListener = (path)=>{ + //console.log('rtdb-get setUpListener for path '+path) + if(oldpath){ + this.admin.database().ref(oldpath).off('value', cb) + } + this.admin.database().ref(path).on('value', cb) + oldpath = path + } + if(config.cred){ let c = RED.nodes.getNode(config.cred) this.admin = c.admin } - const cb = (res)=>{ - console.log('firebase get result '+res) - console.dir(res) - let val = res.val() - console.log('val='+val) - node.send({payload:val}) + //console.log('------------------------------- rtdg-get config') + //console.dir(config) + this.path = config.path + if(this.path){ + setUpListener(this.path) } + + //console.log('configuring rtdb-get to listen for messages') node.on('input', function(msg) { + let path = this.path if(msg && msg.payload){ - const path = msg.payload.path - if(oldpath){ - this.admin.database().ref(oldpath).off('value', cb) - } - this.admin.database().ref(path).on('value', cb) - oldpath = path + path = msg.payload.path + setUpListener(path) } }.bind(this)); diff --git a/rtdb-set.js b/rtdb-set.js index dab24cd..31171dc 100644 --- a/rtdb-set.js +++ b/rtdb-set.js @@ -20,6 +20,9 @@ module.exports = function(RED) { this.admin.database().ref(path).set(obj).then((res)=>{ console.log('firebase set result '+res) console.dir(res) + }).catch((err)=>{ + console.log('------ ERROR ------') + console.dir(err) }) } }.bind(this));