连接Firebase Realtime Database时报错db.collection is not a function求助
问题解决说明
你遇到的报错是因为混用了Firebase两款不同数据库的API:
collection()是Cloud Firestore的专属调用方法,你当前初始化的是Firebase Realtime Database(实时数据库)实例,该实例根本没有collection相关方法,所以触发报错。
修正后的完整代码
const admin = require('firebase-admin'); // Firebase配置,注意不要公开敏感信息 var firebaseConfig = { apiKey: "xxxxxxxxxxxxxxxxxx", authDomain: "xxxxxxxxxxxxxxxxxx", databaseURL: "xxxxxxxxxxxxxxxxxx", projectId: "xxxxxxxxxxxxxxxxxx", storageBucket: "xxxxxxxxxxxxxxxxxx", messagingSenderId: "xxxxxxxxxxxxxxxxxx", } // 初始化Firebase admin.initializeApp(firebaseConfig) const db = admin.database(); console.log("Database setup"); (async () => { try { // 实时数据库使用ref()方法引用节点,替代Firestore的collection() let userRef = db.ref('users'); console.log("Doing database query now"); // 调用get()获取节点数据,也可以使用once('value')实现相同效果 const snapshot = await userRef.get(); if (snapshot.exists()) { // 用val()方法获取原始数据,替代Firestore的data()方法 console.log(snapshot.val()); } else { console.log("节点不存在"); } } catch (error) { console.log(error); } })();
核心API差异注意事项
- 实时数据库使用
ref(<节点路径>)定位数据位置,对应Firestore的collection()/doc() - 单次读取数据可以选择
get()或者once('value')两种写法 - 返回的快照使用
val()方法提取数据,快照的exists()方法用于判断节点是否存在数据
内容的提问来源于stack exchange,提问作者Mayuresh Anand
相关产品推荐
相关产品推荐

