我一直在尝试使用firebase并成功实现了身份验证apis。但我无法将数据推送到firbase数据库。 这是我的代码:
//import firebase from '../../firebase/firebase';
import * as firebase from 'firebase';
export default class Home extends React.Component {
onAddPressed() {
var p = firebase.database().ref().push().set({
title: "Hello World!",
author: "Simon",
location: "Germany",
city: "Muenster",
state: "Germany",
zip: 48155
});
console.log(p);
p.then(function () {
console.log("success")
}, function () {
console.log('rejected promise')
}).catch((e) => console.log(e))
}
render(){
return (
<View>
<Text>This is Home</Text>
<TouchableOpacity
onPress={this.onAddPressed.bind(this)}>
<Text> add User </Text>
</TouchableOpacity>
</View>
);
}
当我点击Text时,会返回Promise P,但它永远不会被解析或拒绝。所以基本上没有任何反应(也没有错误)。 我究竟做错了什么?
Q2。我应该从哪里导入firebase?有两种选择:
1。 import * as firebase from 'firebase';
2。 import firebase from '../../firebase/firebase
(我的单身类)
修改 我的数据库规则如下:
{
"rules": {
".read": "auth == null",
".write": "auth == null"
}
}
我已经创建了一个单独的firebase类,我已经初始化了我的firebase
firebase.initializeApp(config);
export default firebase;
调试后我知道当我执行以下操作时,firebase
未定义。
firebase
.database()
.ref("list/")
.push({
title: "Title",
createAt: new Date().toString()
});
答案 0 :(得分:0)
如果没有明确定义的问题,很难说出确切的解决方案。您是否已在app中初始化了firebase,或者 RULES 是否已设置为公开?
尝试使用以下代码来测试firebase,如果它的工作原理,那么您可以根据需要修改此代码。它在我的案例中工作。不要忘记将您的数据库 RULES 设置为公开,以便进行测试。
import * as firebase from "firebase";
const config = {
apiKey: "apiKey",
authDomain: "authDomain",
databaseURL: "databaseURL",
projectId: "projectId",
storageBucket: "projectId",
messagingSenderId: "messagingSenderId"
};
firebase.initializeApp(config);
firebase
.database()
.ref("list/")
.push({
title: "Title",
createAt: new Date().toString()
});
规则
{
"rules": {
".read": "auth == null",
".write": "auth == null"
}
}
我不会推荐这些规则设置,将其用于测试目的。