javascript 无法获取Firebase Realtime DB以使用我的Web项目进行配置,未显示写入

yvgpqqbh  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(70)

我似乎无法正确配置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的数据

yx2lnoni

yx2lnoni1#

根据经验,Firebase中最常见的数据库写入错误是权限规则配置错误。
默认情况下,禁止所有写操作。您必须在database.rules.json文件中显式设置权限。
下面是一些简单的例子:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

字符串
考虑阅读有关如何为您的项目编写适当规则的文档。
不幸的是,你的规则配置是你的问题中唯一关键的一段代码。你可能应该编辑你的问题来添加那条缺失的信息。
别忘了通过firebase发布你的新规则。在正确发布之前,仅仅拥有这个文件不会有任何区别。

相关问题