无法在 Firestore 模拟器上写入

Posted

技术标签:

【中文标题】无法在 Firestore 模拟器上写入【英文标题】:Unable to write on firestore emulator 【发布时间】:2022-01-16 02:22:49 【问题描述】:

我能够从 Firestore 模拟器读取数据,但无法通过客户端(这是一个 android 应用程序)向其中添加任何数据。

这是错误:

W/Firestore: (24.0.0) [Firestore]: Write failed at Users/vBLloPGsMJrXGDZdZcVO: Statuscode=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null

我在本地环境中的 firestore.rules 文件

rules_version = '2';
service cloud.firestore 
  match /databases/database/documents 
    match /document=** 
    allow read, write: if true;
    
  

这是用于写入firestore的代码

FirebaseFirestore.getInstance().collection("Users")
            .document(userId)
            .set(newUser)
            .addOnCompleteListener(new OnCompleteListener<Void>() 
        @Override
        public void onComplete(@NonNull Task<Void> task) 
            if (task.isSuccessful())

                Log.d(TAG, "new user has been added");
               

            else 

                Log.d(TAG, "Failed to add new user"+Objects.requireNonNull(task.getException()).getMessage());


            
        
    );

【问题讨论】:

根据security rules,您的代码似乎没有足够的权限写入数据库。 我已经展示了我的 firestore.rules 文件 请在问题中添加您用于写入 firestore 的代码 【参考方案1】:

看起来您正在尝试更新文档(与编写文档不同)。尝试在您的 Firestore 安全规则中添加“更新”,如下所示:

allow read, get, update: if true;

【讨论】:

write = create + update + delete,因此更新包含在 OP 规则中。见firebase.google.com/docs/firestore/security/…

以上是关于无法在 Firestore 模拟器上写入的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Firestore:无法访问Firestore后端(仅限Android)

无法在颤振中访问 Firestore 本地仿真器套件

Firestore 触发器未在模拟器上运行

将 cloud_firestore 添加到 pubspec Flutter 后无法为模拟器构建应用程序

安装 cloud_firestore 包后在 Flutter 中的 iOS 模拟器上运行应用程序时出错

如何在集成测试中重置 Firestore 模拟器