我有一个格式为https://imgur.com/ar8A3DN
的firebase数据库我想要两个功能:
1. refExists
,检查数据库中是否存在任何子项。那么
refExists('datasets') = true
refExists('foo') = false
createChild
创建了一个新的孩子。我的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')
两者输出相同的东西。因此,当foo
和ref('datasets')
的行为方式相同时,如何检查ref('foo')
的存在是不明确的。
答案 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);
}