我正在尝试在热门的blog中发布示例react-native firebase应用。
我的初始化如下所示:
const firebaseConfig = {
apiKey: "AIzaSyDKTvsqGoMn9ksXxaujXqciM2M5R0tuZlw",
authDomain: "my-awesome-project-a8216.firebaseapp.com",
databaseURL: "https://my-awesome-project-a8216.firebaseio.com",
storageBucket: "my-awesome-project-a8216.appspot.com",
};
const firebaseApp = firebase.initializeApp(firebaseConfig);
我的代码如下所示:
constructor(props) {
super(props);
this.state = {
dataSource: new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
};
this.itemsRef = this.getRef().child('items');
}
getRef() {
console.log("Reference "+firebaseApp.database().ref().child('items'));
return firebaseApp.database().ref();
}
componentDidMount() {
this.listenForItems(this.itemsRef);
}
_renderItem(item) {
return (
<ListItem item={item} onPress = {() => {
}}/>
);
}
listenForItems(itemsRef) {
console.log("Came 1");
itemsRef.on('value', (snap) => {
console.log("Came Here");
// get children as an array
var items = [];
snap.forEach((child) => {
console.log("my data "+ child.key);
items.push({
title: child.val().title,
_key: child.key
});
});
this.setState({
dataSource: this.state.dataSource.cloneWithRows(items)
});
});
}
在上面的代码中,console.log
函数中有两个listenForItems
调试语句。
console.log("Came 1");
console.log("Came Here");
我看到&#34;来了1&#34;在Chrome控制台上,看不到&#34;来到这里&#34; Chrome控制台中的“网络”选项卡不会显示对代码中引用的firebase网址的任何出站调用。 控制台上没有任何错误,因此我无法调查正在进行的调查......
我感谢您的所有答案。谢谢:))
答案 0 :(得分:2)
如果您想更轻松地进行调试,可以在firebase conf之后立即执行firebase.database.enableLogging(true);
。
Firebase 3.3似乎无法与react-native集成。 等待发布修复程序,您可以降级到教程中使用的相同依赖项:
"dependencies": {
"firebase": "^3.1.0",
"react": "15.2.1",
"react-native": "^0.29.0"
}
现在应该解决你的问题。
还要确保您在firebase设置中允许公共访问。转到项目&gt;数据库&gt;规则。
替换
// These rules require authentication
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
与
// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
"rules": {
".read": true,
".write": true
}
}
请参阅此https://firebase.google.com/docs/database/security/quickstart