Skip to content

Commit e70c313

Browse files
authored
Update RTDB snippets to new API (firebase#132)
1 parent f61ee63 commit e70c313

26 files changed

+159
-151
lines changed

database-next/emulator-suite.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ const firebaseApp = initializeApp({
1111

1212
function onDocumentReady() {
1313
// [START rtdb_emulator_connect]
14-
const { getDatabase } = require("firebase/database");
14+
const { getDatabase, useDatabaseEmulator } = require("firebase/database");
1515

1616
const db = getDatabase(firebaseApp);
1717
if (location.hostname === "localhost") {
1818
// Point to the RTDB emulator running on localhost.
19-
db.useEmulator("localhost", 9000);
19+
useDatabaseEmulator(db, "localhost", 9000);
2020
}
2121
// [END rtdb_emulator_connect]
2222
}
2323

2424
function flushRealtimeDatabase() {
2525
// [START rtdb_emulator_flush]
26-
const { getDatabase } = require("firebase/database");
26+
const { getDatabase, ref, set } = require("firebase/database");
2727

2828
// With a database Reference, write null to clear the database.
2929
const db = getDatabase(firebaseApp);
30-
db.ref().set(null);
30+
set(ref(db), null);
3131
// [END rtdb_emulator_flush]
3232
}

database-next/lists-of-data.js

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ const firebaseApp = initializeApp({
1111

1212
function socialPush() {
1313
// [START rtdb_social_push]
14-
const { getDatabase } = require("firebase/database");
14+
const { getDatabase, ref, push, set } = require("firebase/database");
1515

1616
// Create a new post reference with an auto-generated id
1717
const db = getDatabase(firebaseApp);
18-
const postListRef = db.ref('posts');
19-
const newPostRef = postListRef.push();
20-
newPostRef.set({
18+
const postListRef = ref(db, 'posts');
19+
const newPostRef = push(postListRef);
20+
set(newPostRef, {
2121
// ...
2222
});
2323
// [END rtdb_social_push]
@@ -31,19 +31,19 @@ function socialListenChildren() {
3131
function deleteComment(el, key) {};
3232

3333
// [START rtdb_social_listen_children]
34-
const { getDatabase } = require("firebase/database");
34+
const { getDatabase, ref, onChildAdded, onChildChanged, onChildRemoved } = require("firebase/database");
3535

3636
const db = getDatabase(firebaseApp);
37-
const commentsRef = db.ref('post-comments/' + postId);
38-
commentsRef.on('child_added', (data) => {
37+
const commentsRef = ref(db, 'post-comments/' + postId);
38+
onChildAdded(commentsRef, (data) => {
3939
addCommentElement(postElement, data.key, data.val().text, data.val().author);
4040
});
4141

42-
commentsRef.on('child_changed', (data) => {
42+
onChildChanged(commentsRef, (data) => {
4343
setCommentValues(postElement, data.key, data.val().text, data.val().author);
4444
});
4545

46-
commentsRef.on('child_removed', (data) => {
46+
onChildRemoved(commentsRef, (data) => {
4747
deleteComment(postElement, data.key);
4848
});
4949
// [END rtdb_social_listen_children]
@@ -52,48 +52,50 @@ function socialListenChildren() {
5252
function socialListenValue() {
5353

5454
// [START rtdb_social_listen_value]
55-
const { getDatabase } = require("firebase/database");
55+
const { getDatabase, ref, onValue } = require("firebase/database");
5656

5757
const db = getDatabase(firebaseApp);
58-
const ref = db.ref('/a/b/c');
58+
const dbRef = ref(db, '/a/b/c');
5959

60-
ref.once('value', (snapshot) => {
60+
onValue(dbRef, (snapshot) => {
6161
snapshot.forEach((childSnapshot) => {
6262
const childKey = childSnapshot.key;
6363
const childData = childSnapshot.val();
6464
// ...
6565
});
66+
}, {
67+
onlyOnce: true
6668
});
6769
// [END rtdb_social_listen_value]
6870
}
6971

7072
function socialMostStarred() {
7173
// [START rtdb_social_most_starred]
72-
const { getDatabase } = require("firebase/database");
74+
const { getDatabase, ref, query, orderByChild } = require("firebase/database");
7375
const { getAuth } = require("firebase/auth");
7476

7577
const db = getDatabase(firebaseApp);
7678
const auth = getAuth(firebaseApp);
7779

7880
const myUserId = auth.currentUser.uid;
79-
const topUserPostsRef = db.ref('user-posts/' + myUserId).orderByChild('starCount');
81+
const topUserPostsRef = query(ref(db, 'user-posts/' + myUserId), orderByChild('starCount'));
8082
// [END rtdb_social_most_starred]
8183
}
8284

8385
function socialMostViewed() {
8486
// [START rtdb_social_most_viewed]
85-
const { getDatabase } = require("firebase/database");
87+
const { getDatabase, ref, query, orderByChild } = require("firebase/database");
8688

8789
const db = getDatabase(firebaseApp);
88-
const mostViewedPosts = db.ref('posts').orderByChild('metrics/views');
90+
const mostViewedPosts = query(ref(db, 'posts'), orderByChild('metrics/views'));
8991
// [END rtdb_social_most_viewed]
9092
}
9193

9294
function socialRecent() {
9395
// [START rtdb_social_recent]
94-
const { getDatabase } = require("firebase/database");
96+
const { getDatabase, ref, query, limitToLast } = require("firebase/database");
9597

9698
const db = getDatabase(firebaseApp);
97-
const recentPostsRef = db.ref('posts').limitToLast(100);
99+
const recentPostsRef = query(ref(db, 'posts'), limitToLast(100));
98100
// [END rtdb_social_recent]
99101
}

database-next/offline.js

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,23 @@ const firebaseApp = initializeApp({
1111

1212
function onDisconnectSimple() {
1313
// [START rtdb_ondisconnect_simple]
14-
const { getDatabase } = require("firebase/database");
14+
const { getDatabase, ref, onDisconnect } = require("firebase/database");
1515

1616
const db = getDatabase(firebaseApp);
17-
const presenceRef = db.ref("disconnectmessage");
17+
const presenceRef = ref(db, "disconnectmessage");
1818
// Write a string when this client loses connection
19-
presenceRef.onDisconnect().set("I disconnected!");
19+
onDisconnect(presenceRef).set("I disconnected!");
2020
// [END rtdb_ondisconnect_simple]
2121
}
2222

2323
function onDisconnectCallback() {
24-
const { getDatabase } = require("firebase/database");
24+
const { getDatabase, ref, onDisconnect } = require("firebase/database");
2525

2626
const db = getDatabase(firebaseApp);
27-
const presenceRef = db.ref("disconnectmessage");
27+
const presenceRef = ref(db, "disconnectmessage");
2828

2929
// [START rtdb_ondisconnect_callback]
30-
presenceRef.onDisconnect().remove((err) => {
30+
onDisconnect(presenceRef).remove().catch((err) => {
3131
if (err) {
3232
console.error("could not establish onDisconnect event", err);
3333
}
@@ -36,13 +36,13 @@ function onDisconnectCallback() {
3636
}
3737

3838
function onDisconnectCancel() {
39-
const { getDatabase } = require("firebase/database");
39+
const { getDatabase, ref, onDisconnect } = require("firebase/database");
4040

4141
const db = getDatabase(firebaseApp);
42-
const presenceRef = db.ref("disconnectmessage");
42+
const presenceRef = ref(db, "disconnectmessage");
4343

4444
// [START rtdb_ondisconnect_cancel]
45-
const onDisconnectRef = presenceRef.onDisconnect();
45+
const onDisconnectRef = onDisconnect(presenceRef);
4646
onDisconnectRef.set("I disconnected");
4747
// some time later when we change our minds
4848
onDisconnectRef.cancel();
@@ -51,11 +51,11 @@ function onDisconnectCancel() {
5151

5252
function detectConnectionState() {
5353
// [START rtdb_detect_connection_state]
54-
const { getDatabase } = require("firebase/database");
54+
const { getDatabase, ref, onValue } = require("firebase/database");
5555

5656
const db = getDatabase(firebaseApp);
57-
const connectedRef = db.ref(".info/connected");
58-
connectedRef.on("value", (snap) => {
57+
const connectedRef = ref(db, ".info/connected");
58+
onValue(connectedRef, (snap) => {
5959
if (snap.val() === true) {
6060
console.log("connected");
6161
} else {
@@ -67,21 +67,21 @@ function detectConnectionState() {
6767

6868
function setServerTimestamp() {
6969
// [START rtdb_set_server_timestamp]
70-
const { getDatabase, ServerValue } = require("firebase/database");
70+
const { getDatabase, ref, onDisconnect, serverTimestamp } = require("firebase/database");
7171

7272
const db = getDatabase(firebaseApp);
73-
const userLastOnlineRef = db.ref("users/joe/lastOnline");
74-
userLastOnlineRef.onDisconnect().set(ServerValue.TIMESTAMP);
73+
const userLastOnlineRef = ref(db, "users/joe/lastOnline");
74+
onDisconnect(userLastOnlineRef).set(serverTimestamp());
7575
// [END rtdb_set_server_timestamp]
7676
}
7777

7878
function estimateClockSkew() {
7979
// [START rtdb_estimate_clock_skew]
80-
const { getDatabase } = require("firebase/database");
80+
const { getDatabase, ref, onValue } = require("firebase/database");
8181

8282
const db = getDatabase(firebaseApp);
83-
const offsetRef = db.ref(".info/serverTimeOffset");
84-
offsetRef.on("value", (snap) => {
83+
const offsetRef = ref(db, ".info/serverTimeOffset");
84+
onValue(offsetRef, (snap) => {
8585
const offset = snap.val();
8686
const estimatedServerTimeMs = new Date().getTime() + offset;
8787
});
@@ -90,31 +90,31 @@ function estimateClockSkew() {
9090

9191
function samplePresenceApp() {
9292
// [START rtdb_sample_presence_app]
93-
const { getDatabase, ServerValue } = require("firebase/database");
93+
const { getDatabase, ref, onValue, push, onDisconnect, set, serverTimestamp } = require("firebase/database");
9494

9595
// Since I can connect from multiple devices or browser tabs, we store each connection instance separately
9696
// any time that connectionsRef's value is null (i.e. has no children) I am offline
9797
const db = getDatabase(firebaseApp);
98-
const myConnectionsRef = db.ref('users/joe/connections');
98+
const myConnectionsRef = ref(db, 'users/joe/connections');
9999

100100
// stores the timestamp of my last disconnect (the last time I was seen online)
101-
const lastOnlineRef = db.ref('users/joe/lastOnline');
101+
const lastOnlineRef = ref(db, 'users/joe/lastOnline');
102102

103-
const connectedRef = db.ref('.info/connected');
104-
connectedRef.on('value', (snap) => {
103+
const connectedRef = ref(db, '.info/connected');
104+
onValue(connectedRef, (snap) => {
105105
if (snap.val() === true) {
106106
// We're connected (or reconnected)! Do anything here that should happen only if online (or on reconnect)
107-
const con = myConnectionsRef.push();
107+
const con = push(myConnectionsRef);
108108

109109
// When I disconnect, remove this device
110-
con.onDisconnect().remove();
110+
onDisconnect(con).remove();
111111

112112
// Add this device to my connections list
113113
// this value could contain info about the device or a timestamp too
114-
con.set(true);
114+
set(con, true);
115115

116116
// When I disconnect, update the last time I was seen online
117-
lastOnlineRef.onDisconnect().set(ServerValue.TIMESTAMP);
117+
onDisconnect(lastOnlineRef).set(serverTimestamp());
118118
}
119119
});
120120
// [END rtdb_sample_presence_app]

0 commit comments

Comments
 (0)