我似乎无法正确配置react native app的实时数据库。
- 我已经在Firebase上创建了这个项目。
- 我添加了一个“Web应用程序”。
- 我检查了一下,似乎我的权限允许读/写。
- 我复制了配置文件
- 使用npm安装firebase
不幸的是,对数据库的写尝试似乎没有显示。我不太确定是因为我没有正确配置应用程序,还是我用于设置写的代码错误
my package.json:
{
"name": "VizboMobile",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"lint": "eslint .",
"start": "react-native start",
"test": "jest"
},
"dependencies": {
"@react-navigation/native": "^6.1.9",
"@react-navigation/native-stack": "^6.9.17",
"@rneui/base": "^4.0.0-rc.7",
"@rneui/themed": "^4.0.0-rc.8",
"express": "^4.18.2",
"firebase": "^10.7.1",
"react": "18.2.0",
"react-native": "0.72.6",
"react-native-safe-area-context": "^4.7.4",
"react-native-screens": "^3.27.0",
"react-native-vector-icons": "^10.0.2",
"react-navigation": "^5.0.0"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@react-native/eslint-config": "^0.72.2",
"@react-native/metro-config": "^0.72.11",
"@tsconfig/react-native": "^3.0.0",
"@types/react": "^18.0.24",
"@types/react-test-renderer": "^18.0.0",
"babel-jest": "^29.2.1",
"eslint": "^8.19.0",
"jest": "^29.2.1",
"metro-react-native-babel-preset": "0.76.8",
"prettier": "^2.4.1",
"react-test-renderer": "18.2.0",
"typescript": "4.8.4"
},
"engines": {
"node": ">=16"
}
}
字符串
在一个名为firebaseConfig.tsx的文件中,我有以下内容:
const firebaseConfig = {
apiKey: "aaaaaaaaaa",
authDomain: "bbbbbbbbbb",
databaseURL: "cccccccccc",
projectId: "dddddddddd",
storageBucket: "eeeeeeeeeee",
messagingSenderId: "ffffffff",
appId: "gggggggggg",
measurementId: "hhhhhhhhhhh"
};
const app3 = initializeApp(firebaseConfig)
export {app3};
型
在此之后,我使用以下代码尝试写入我创建的数据库:
import { getDatabase } from 'firebase/database';
import {set,ref} from 'firebase/database'
const db = getDatabase(app3)
function writeUserData(userId, name, email) {
set(ref(db, 'users/' + userId), {
username: name,
email: email
});
}
型
然后我有一个按钮激活如下:
function TestFirebaseScreen({navigation}: any) {
function writeUserData(userId: string, name: string, email: string) {
set(ref(db, 'users/' + userId), {
username: name,
email: email,
}).then(() => console.log("success"))
}
return (
<SafeAreaView>
<Button
title = "test"
onPress={() => writeUserData("abc", "a", "b")}
/>
</SafeAreaView>
);
}
export default TestFirebaseScreen
型
当我在firebase上查看我的数据库时,数据库仍然是空的。有人能提供一些见解吗?
x1c 0d1x的数据
1条答案
按热度按时间yx2lnoni1#
根据经验,Firebase中最常见的数据库写入错误是权限规则配置错误。
默认情况下,禁止所有写操作。您必须在database.rules.json文件中显式设置权限。
下面是一些简单的例子:
字符串
考虑阅读有关如何为您的项目编写适当规则的文档。
不幸的是,你的规则配置是你的问题中唯一关键的一段代码。你可能应该编辑你的问题来添加那条缺失的信息。
别忘了通过firebase发布你的新规则。在正确发布之前,仅仅拥有这个文件不会有任何区别。