简体   繁体   中英

Check for existence of value in firebase realtime database?

I'm using V9 (modular) version of Firebase realtime database. I have a list of URLs with auto-generated keys using push() . This is the data structure.

在此处输入图像描述

What I want is to check for the existence of one of these url's in the list. Here's what I've attempted.

    const testURL = "https://i.redd.it/bm6psl9sgsj81.png"; //First one in the list
    const db = getDatabase();
    const dbRef = ref(db, "burnedURLs/");
    const q = query(dbRef, equalTo(testURL));
    const snapshot = await get(q);
    const results = snapshot.toJSON();
    console.log(results); //Returns NULL

How does one check the existence of a value, or just retrieve a value when you don't know the key? The documentation for V9 isn't very good and most examples I've found are for V8. Thanks for any help.

Edit: Using exists() returns false when it does exist (It's the first child in the tree). I think the issue is that I'm not forming the query correctly and that's what I need help with.

The get(<query>) returns a DataSnapshot that still has exists() which returns true if this DataSnapshot contains any data.:

const q = query(dbRef, orderByValue(), equalTo(testURL));

const snapshot = await get(q);

if (snapshot.exists()) {
  const results = snapshot.val();
  console.log('Results', results)
} else {
  console.log('Data does not exist')
}

From the documentation,

To filter data, you can combine any of the limit or range methods with an order-by method when constructing a query.

So adding orderByValue() in query should solve the issue.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM