Files
node_task_1a/services/FirebaseService.js
T
2022-04-12 08:57:07 -04:00

167 lines
4.5 KiB
JavaScript

var firebase = require('firebase-admin');
var serviceAccount = require('./serviceAccountKey.json');
/*
Examples:
Write:
firebaseService.write('notification', 1, {
a: 1,
b: 'd',
c:['a','w'],
d: [{a:1},{b:2}]
})
Read Once:
firebaseService.read('notification', 1).then(function(notification){
console.log(notification);
});
Update:
firebaseService.update('notification', 1, {a:2});
usersRef.update({
"alanisawesome/nickname": "Alan The Machine",
"gracehop/nickname": "Amazing Grace"
});
Read On Listeners:
ref.on("value", function(snapshot) {
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
Read Previous Listener:
ref.on("child_added", function(snapshot, prevChildKey) {
var newPost = snapshot.val();
console.log("Author: " + newPost.author);
console.log("Title: " + newPost.title);
console.log("Previous Post ID: " + prevChildKey);
});
Child Changed Listener:
// Get the data on a post that has changed
ref.on("child_changed", function(snapshot) {
var changedPost = snapshot.val();
console.log("The updated post title is " + changedPost.title);
});
Child Removed Listener:
// Get the data on a post that has been removed
ref.on("child_removed", function(snapshot) {
var deletedPost = snapshot.val();
console.log("The blog post titled '" + deletedPost.title + "' has been deleted");
});
Order By Listener:
ref.orderByChild("height").on("child_added", function(snapshot) {
console.log(snapshot.key + " was " + snapshot.val().height + " meters tall");
});
Order By key:
var ref = db.ref("dinosaurs");
ref.orderByKey().on("child_added", function(snapshot) {
console.log(snapshot.key);
});
Limited:
var ref = db.ref("dinosaurs");
ref.orderByChild("weight").limitToLast(2).on("child_added", function(snapshot) {
console.log(snapshot.key);
});
var ref = db.ref("dinosaurs");
ref.orderByChild("height").startAt(3).on("child_added", function(snapshot) {
console.log(snapshot.key);
});
var ref = db.ref("dinosaurs");
ref.orderByKey().endAt("pterodactyl").on("child_added", function(snapshot) {
console.log(snapshot.key);
});
var ref = db.ref("dinosaurs");
ref.orderByKey().startAt("b").endAt("b\uf8ff").on("child_added", function(snapshot) {
console.log(snapshot.key);
});
Equal To:
var ref = db.ref("dinosaurs");
ref.orderByChild("height").equalTo(25).on("child_added", function(snapshot) {
console.log(snapshot.key);
});
*/
function FirebaseService() {
this._transporter = firebase.initializeApp(
{
// credential: firebase.credential.cert('./serviceAccountKey.json'),
credential: firebase.credential.cert(serviceAccount),
databaseURL: 'https://konfer-243320.firebaseio.com',
},
// , 'flashbid-prod'
);
console.log('Prod Firebase');
this._database = this._transporter.database();
this._messaging = this._transporter.messaging();
this.write = function (table, id, payload) {
return this._database.ref(table + '/' + id).set(payload);
};
this.read = function (table, id) {
return this._database
.ref(table + '/' + id)
.once('value')
.then(function (snapshot) {
return snapshot.val();
});
};
this.update = function (table, id, payload) {
const ref = this._database.ref(table).child(id);
ref.update(payload);
};
this.updateSpecific = function (table, id, payload) {
return this._database.ref(table + '/' + id).update(payload);
};
this.pushToList = function (table, id, listField, payload) {
const ref = this._database.ref(table).child(id).child(listField).push();
ref.set(payload);
};
this.sendPushNotification = function (
id,
title,
subs,
description,
deviceId,
) {
// This registration token comes from the client FCM SDKs.
// See the "Defining the message payload" section above for details
// on how to define a message payload.
var payload = {
notification: {
title: title,
body: description,
},
data: {
title: subs.text,
body: subs.desc,
action: subs.action,
id: id,
},
};
// Set the message as high priority and have it expire after 24 hours.
var options = {
priority: 'high',
timeToLive: 60 * 60 * 24,
};
console.log('payload', payload);
console.log('device id', deviceId);
// Send a message to the device corresponding to the provided
// registration token with the provided options.
return this._messaging.sendToDevice(deviceId, payload, options);
};
}
module.exports = FirebaseService;