无法从 Firebase(Cloud Firestore 数据库)获取数据

Posted

技术标签:

【中文标题】无法从 Firebase(Cloud Firestore 数据库)获取数据【英文标题】:Unable to fetch data from Firebase (Cloud Firestore Database) 【发布时间】:2019-10-29 23:53:47 【问题描述】:

我的 Cloud Firestore 数据库中有一些数据。集合的名称是 bus,我有 2 个文档(bus_id_1 和 bus_id_2)。我添加了一个按钮,这样当我单击它时,我会在 TextView 中从数据库中获取数据。

TextView busesText;

private Button btnViewData;
FirebaseFirestore db = FirebaseFirestore.getInstance();
private DocumentReference mDocRef = db.getInstance().document("buses/bus_id_1");

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    FirebaseApp.initializeApp(this);
    setContentView(R.layout.activity_main);
    busesText = (TextView)findViewById(R.id.showData);
   

public void getData(View view)

    mDocRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() 
        @Override
        public void onSuccess(DocumentSnapshot documentSnapshot) 
            if (documentSnapshot.exists()) 
                Bus bus = documentSnapshot.toObject(Bus.class);
                busesText.setText(bus.getLine());
            
        
    );

当我点击按钮时,我在控制台中看到:

W/RenderThread: type=1400 audit(0.0:733273): avc: denied read for name="perf_ioctl" dev="proc" ino=4026533695 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=文件许可=0 V/FA:不活动,断开与 服务

可能是什么原因?

【问题讨论】:

此消息与任何 Firebase SDK 均无关。这是由 android 平台内部的东西记录的。 您的应用会崩溃吗? @AlexMamo 不,它不会崩溃,只是在我单击按钮时不显示数据。 您能否重新检查您的文件先生或从 Firestore 发布您的数据 【参考方案1】:

您的数据库似乎不允许读取操作,因此您需要更改 Firestore 数据库的规则。它应该是这样的:-

service cloud.firestore 
  match /databases/database/documents 
    match /document=** 
      allow read, write;
    
  

注意:- 仅当您想从应用程序更新数据库时才允许写入。

【讨论】:

我在规则中有这个 在初始化 FirebaseApp 后尝试在 onCreate() 中初始化 db 和 myDocRef。 谢谢,但还是不行。 E/EnhancedIntentService: 绑定到服务失败而且我点击按钮时也出现上一个错误 拒绝重新初始化以前失败的类 java.lang.Class:java.lang.NoClassDefFoundError:解析失败:Landroid/view/查看$OnUnhandledKeyEventListener; 原因:java.lang.ClassNotFoundException:在路径上找不到类“android.view.View$OnUnhandledKeyEventListener”:DexPathList** 拒绝在先前失败的类 java.lang 上重新初始化。类:java.lang.NoClassDefFoundError:解析失败:Landroid/view/View$OnUnhandledKeyEventListener;

以上是关于无法从 Firebase(Cloud Firestore 数据库)获取数据的主要内容,如果未能解决你的问题,请参考以下文章

INVALID_ARGUMENT:每个请求最多允许 500 次写入 - Firebase Cloud Function - Firestore

Firebase Cloud Functions:无法从文件中读取凭据

无法从 Firebase(Cloud Firestore 数据库)获取数据

无法按日期从 Google Cloud Pub/Sub 功能中的 Firebase 获取文档

BigQuery 与 Cloud SQL 自动扩缩?

Flutter Firebase Cloud 功能无法调用