-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
42 lines (40 loc) · 1.11 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
exports.vote = functions.https.onRequest((request, response) => {
const vote = request.body.vote;
if (vote === "a" || vote === "b") {
const resultsRef = admin.database().ref("/result");
const ref = resultsRef.child(vote);
ref.transaction(currentVotes => {
// If result.{vote} has never been set, currentVotes will be `null`.
return (currentVotes || 0) + 1;
});
response.send("You voted: " + vote);
} else {
response.status(400).send("Invalid request");
}
});
exports.results = functions.https.onRequest((request, response) => {
var results = {
success: true,
result: {
a: 0,
b: 0
}
};
return admin
.database()
.ref("/result")
.once("value")
.then(snapshot => {
const resultsData = snapshot.val();
results.result.a = resultsData.a || 0;
results.result.b = resultsData.b || 0;
response.json(results);
return;
})
.catch(_ => {
response.json(results);
});
});