我正在尝试从EXPO应用程序中的Firebase获取数据 所以这是我实现此代码的组件:
import firebase from 'firebase';
// Initialize Firebase
var config = {
apiKey: "AIzaSyAVf",
authDomain: "d07f5.firebaseapp.com",
databaseURL: "https://d07f5.firebaseio.com",
projectId: "d07f5",
storageBucket: "d07f5.appspot.com",
messagingSenderId: "66392528"
};
firebase.initializeApp(config);
const api =
firebase.database().ref('/Barbers').on('value', (snapshot) => {
console.log('testing')
console.log(snapshot.val())
});
export default {
getBarbersShops,
}
当我在Android设备上运行该应用程序并从浏览器的控制台查看远程调试时,我发现了我在控制台中为该控制台编写的“测试”一词:
console.log(snapshot.val())
我只是为此而为空,不知道为什么?
这是要在Firebase中收集的图像:
答案 0 :(得分:3)
由于您的代码正在访问Firebase Realtime数据库,所以您将获得null,但是数据图片显示该数据存储在Cloud Firestore中。这些不是相同的产品-它们既不共享相同的数据,也不共享相同的API。
答案 1 :(得分:2)
doug stevensons的答案是完全正确的!要使用响应本机从firestore中获取文档,可以使用以下代码:
import firebase from 'react-native-firebase'
myFunction(){
firebase.firestore().collection('Barbers').doc('9R4t...').get().then(doc => {
if(doc.exists){
console.log(doc.data().name); // testing
}
}
}
或异步:
async myFunctionAsync(){
const doc = await firebase.firestore().collection('Barbers').doc('9R4t...').get();
if(doc.exists){
console.log(doc.data().name); // testing
}
}