Firebase检查数据库是否存在

时间:2018-05-27 19:16:16

标签: node.js firebase firebase-realtime-database

我有一个格式为https://imgur.com/ar8A3DN

的firebase数据库

我想要两个功能: 1. refExists,检查数据库中是否存在任何子项。那么

refExists('datasets') = true
refExists('foo') = false
  1. createChild创建了一个新的孩子。
  2. 我的firebase数据库实例通过以下方式声明:

    const accountKeyPath = path.join(__dirname, 'path/to/serviceAccountKey.json')
    const accountKey     = require(accountKeyPath);
    const firebaseAdmin  = admin.initializeApp(accountKey);
    const dbRef          = firebaseAdmin.database().ref('datasets');
    

    有趣的是dbRef和这段代码应该返回错误:

    const badRef = firebaseAdmin.database().ref('foo')
    

    两者输出相同的东西。因此,当fooref('datasets')的行为方式相同时,如何检查ref('foo')的存在是不明确的。

1 个答案:

答案 0 :(得分:1)

检查元素是否存在的方法是尝试检索它的快照 - 如果快照返回null,则该元素不存在。

添加元素就像使用数据对象在所需的元素路径上调用set一样简单。

function refExists(path) {
  firebaseAdmin.database().child(path).once('value', (snap) => {
    if (snap.val() !== null) {
        console.log('ref exists');
    }
  });
}

function addRef(newPath, data) {
  firebaseAdmin.database().child(newPath).set(data);
}