小编Ale*_*amo的帖子

什么是Firebase Cloud Firestore中的非规范化?

在谈论Firebase Cloud Firestore时,这种非规范化到底意味着什么?我在互联网上阅读了几篇文章,并在此处找到了一些关于stackoverflow的答案,大多数答案都推荐这种方法。这种非规范化真正有什么帮助?总是有必要吗?

数据库扁平化和非规范化是一回事吗?

这是我的首要问题,希望我能找到一个可以帮助我理解这一概念的答案。我知道是不同的,但是我有两年的MySQL经验。

firebase google-cloud-firestore

1
推荐指数
1
解决办法
704
查看次数

在android中的firestore中创建一个自定义文档id,而不是生成随机的

如何编辑此代码以便在 Firestore 中创建自己的自定义文档 ID?

users.add(new Accounts(fname, lname, uname, email, pass)).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
        @Override
        public void onSuccess(DocumentReference documentReference) {
            Toast.makeText(CreateAccount.this, "Data saved to FireStore", Toast.LENGTH_SHORT).show();
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
             Log.d(TAG, e.toString());
        }
    });
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
2642
查看次数

如何使用 Android 从 Cloud Firestore 中的地图检索特定字段?

这是 firebase Firestore 中保存的部分数据:

在此输入图像描述

在 Java 中如何fName从 ()获取 ( newFriend0)?

这是代码的一部分。它给出了整个地图。我只想要一个特定的字段,例如 (“jem” for (fName))

Map<String, Object> map = document.getData();

for (Map.Entry<String, Object> entry : map.entrySet()){

if (entry.getKey().equals("Friends")){

f=document.getString("FName");////not worked

Log.d("TAG", entry.getValue().toString());
                                                   }
                                               }
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
3000
查看次数

Java,Firestore - 在 android studio 中使用文档 id 的数组列表从 firestore 获取多个文档

我有一个 ArrayList,其中包含我想要获取的所有 id。有没有办法可以使用列表获取多个文档及其字段值。另外,如果我必须手动创建一个 for 循环来获取每个文档,我该怎么做?

Firestore数据结构:

Users:
  user1:
     field1 :
     field2 :
     field3 :
     field4 :
  user2:
     field1 :
     field2 :
     field3 :
     field4 :
  user3:
     field1 :
     field2 :
     field3 :
     field4 :
Run Code Online (Sandbox Code Playgroud)

该列表包含:user1、user2、user3 等等...

编辑1:我尝试使用for循环来获取它,但它给出了一个空指针异常FriendsData.add(userDetails);

 for (String doc : list_of_Friends) {
                    FirebaseFirestore.getInstance().collection("Users").document(doc).get()
                            .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                                @Override
                                public void onSuccess(DocumentSnapshot documentSnapshot) {
                                    FamilyMember userDetails = documentSnapshot.toObject(FamilyMember.class);
                                    FriendsData.add(userDetails);
                                }
                            });
Run Code Online (Sandbox Code Playgroud)

编辑2:

循环的另一个逻辑也给出了相同的错误。当我登录时,我可以看到doc&都ds.getId()在获取值

FirebaseFirestore.getInstance().collection("Users").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<QuerySnapshot> task) {
                            if(task.isSuccessful())
                            for (DocumentSnapshot …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
847
查看次数

如何在 Swift 中查询具有多个键值对的 firestore 数组

我在 Cloud Firestore 中的一个集合有一个数组,其中数组中的每个项目都包含三个单独的值(请参阅该groupMembership字段: 在此输入图像描述

我知道我无法编写查询来查找与数组值之一匹配的文档。有没有办法编写查询来查找与所有三个项目的特定值匹配的文档?

例如,我想找到数组中包含一个对象的所有users位置groupMembership,该对象等于groupId: X, groupName: Y, membershipStatus: active

firebase swift google-cloud-firestore

1
推荐指数
1
解决办法
791
查看次数

Google云平台和Firebase存储之间有什么联系?

我正在尝试将媒体数据存储在云中的某个位置,并通过我的 Android 应用程序下载它们。我发现这应该由谷歌云平台来完成。

但当我开始调查时,我了解到我首先需要拥有 Firebase Storage。那么我还需要云平台吗?这不是同一件事吗?

说实话我不明白这两者之间的区别。

那么Google Cloud Platform和Firebase Storage之间有什么区别和联系呢?以及他们如何合作?

android google-cloud-storage firebase google-cloud-platform

1
推荐指数
1
解决办法
220
查看次数

如何将数据从 Mongo db 迁移到 Firestore?

我们希望将海量数据(假设有 2000 万)从 Mongo DB 迁移到 Firestore。

我知道我们可以通过编程来做到这一点,但是有什么工具吗?

firebase google-cloud-datastore google-cloud-firestore

0
推荐指数
1
解决办法
3559
查看次数

Android Firestore 对自定义对象模型的限制

我正在迁移我的应用程序以使用 Firebase Firestore,并且我的模型之一非常复杂(包含其他自定义对象的列表)。查看文档,了解如何将模型对象作为文档提交,看起来您只需使用公共构造函数以及 getter 和 setter 创建模型对象。

例如,来自添加数据指南:

public class City {
    private String name;
    private String state;
    private String country;
    private boolean capital;
    private long population;
    private List<String> regions;

    public City() {}

    public City(String name, String state, String country, boolean capital, long population, List<String> regions) {

    // getters/setters
}
Run Code Online (Sandbox Code Playgroud)

Firestore 会自动将其与文档进行相互转换,无需任何其他步骤。您将一个实例传递给DocumentReference.set(city)调用,并从调用中检索它DocumentSnapshot.toObject(City.class)

它到底是如何将其序列化为文档的?通过反思?它没有讨论任何限制。基本上,我想知道这是否适用于更复杂的模型,以及有多复杂。它适用于具有自定义对象的类吗ArrayList

java android firebase google-cloud-firestore

0
推荐指数
1
解决办法
980
查看次数

侦听 Firebase Firestore 数据库中的元数据更改

我正在使用 Firestore 数据库创建聊天模块。以下是我侦听新消息的侦听器代码:

   mDb.collection("Users_Collection").document(mAuth.getUid()).collection("Recipients")
                .document(psychichObj.getUid()).collection("Messages").orderBy("time").limit(30)
                .addSnapshotListener(MetadataChanges.INCLUDE, new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                        if (e==null){
                            for (DocumentChange dc:queryDocumentSnapshots.getDocumentChanges()){
                                switch (dc.getType()){
                                    case ADDED:
                                        Log.d("chatevents", "onEvent:Added ");
                                        messgaesDataClass msg = dc.getDocument().toObject(messgaesDataClass.class);
                                        messages.add(msg);
                                        chatAdapter.notifyDataSetChanged();
                                        messagesRecycler.smoothScrollToPosition(messages.size());
                                        break;
                                    case REMOVED:
                                        Log.d("chatevents", "onEvent:Removed ");

                                    case MODIFIED:
                                        Log.d("chatevents", "onEvent:Modiefied ");

                                }
                            }
                        }
                    }
                });
Run Code Online (Sandbox Code Playgroud)

当我发送消息时,我想知道如何侦听本地缓存中的 msg 对象或其元数据处于挂起状态但尚未发送到服务器的消息?

java android firebase google-cloud-firestore

0
推荐指数
1
解决办法
2393
查看次数

如何处理版本17.0.1和16.0.1的Firebase错误消息

我目前正在使用Cloud Firestore以及云存储,并且在向我的应用添加必要的依赖项后,我会立即收到这些错误消息:

Failed to resolve: firebase-firestore-15.0.0
Failed to resolve: firebase-storage-15.0.0
Failed to resolve: firebase-auth-15.0.0
Run Code Online (Sandbox Code Playgroud)

我很确定我必须修复代码行,但我不知道我要编辑哪个部分:

在此输入图像描述

java android firebase build.gradle google-cloud-firestore

0
推荐指数
1
解决办法
140
查看次数

在 google firestore 中使用交易的缺点

我正在开发 Flutter 应用程序,并且正在使用 Firebase 服务。我只想坚持使用事务,因为我更喜欢一致性而不是简单性。

await Firestore.instance.collection('user').document(id).updateData({'name': 'new name'});

await Firestore.instance.runTransaction((transaction) async {
      transaction.update(Firestore.instance.collection('user').document(id), {'name': 'new name'});
    });
Run Code Online (Sandbox Code Playgroud)

交易有任何(主要)缺点吗?例如,它们是否更贵(Firebase 计费,而不是计算)?毕竟 Firestore 数据库上的数据可能会发生更改,这将导致最多 5 次重试。

供参考:https : //firebase.google.com/docs/firestore/manage-data/transactions

“您还可以使用事务对数据进行原子更改。虽然这对于增加投票总数来说有点笨拙,但对于更复杂的更改来说这是正确的方法。”

https://codelabs.developers.google.com/codelabs/flutter-firebase/#10

transactions firebase flutter google-cloud-firestore

0
推荐指数
1
解决办法
1489
查看次数

AddSnapShotListener 在一个实例中重复读取文档

当我使用addSnapshotListener进行实时更新时,文档会重复,这不应该是这种情况,但是当使用getDocuments()文档仅重复一次时,我需要使用addSnaphotListener但不想重复文档读取,请协助我哪里错了使用快照监听器。

我在 Swift iOS 中使用 Firestore 数据库。下面是我正在使用的代码

代码addSnapShotListener()

func getComments() {

      //print(postId + "received")
        let commentsRef = Firestore.firestore().collection("posts").document(postId).collection("comments")

        commentsRef.addSnapshotListener { (snapshot, error) in

            if let error = error {

                print(error.localizedDescription)

            } else {

                if let snapshot = snapshot {

                    for document in snapshot.documents {

                      // self.length = snapshot.count


                        let data = document.data()
                        let username = data["comment_author_username"] as? String ?? ""
                        let comment = data["comment_author_comment"] as? String ?? ""
                        let spinnerC = data["comment_author_spinnerC"] as? String …
Run Code Online (Sandbox Code Playgroud)

ios firebase swift google-cloud-firestore

0
推荐指数
1
解决办法
1283
查看次数

您能否在 Firestore 中高效存储大量大型文档?

我有大量数据(大小大于 500kB),但始终小于 1MB。我可以将这些 blob 存储在 Cloud Storage 之类的地方,但直接从 Firestore 读取/写入它们会方便得多。

Firestore 可以容纳最大 1MB 的文档,因此我的 blob 将适合 Firestore 文档,但Firestore 文档还指出:

Firestore 针对存储大量小文档进行了优化。

这让我认为读取和写入接近 1MB 限制的大量文档会对 Firestore 的性能产生负面影响,从而减慢对其他不相关小文档的访问速度。是这样吗?

firebase google-cloud-firestore

0
推荐指数
1
解决办法
1913
查看次数