当前位置: 首页 > 知识库问答 >
问题:

修复如何在子集合中保存数据

岳劲
2023-03-14

我有一个集合,每个用户都有自己的文档。现在,我想创建一个子集合来存储与特定用户相关的更多数据。

到目前为止,我的代码如下所示:

class DatabaseService {

  Future isUserRegistered(String uid) async{
    return await FirebaseFirestore.instance.collection('users')
        .where('uid', isEqualTo: uid)
        .get();
  }

  Future registerNewUser(email, password, uid) async{
    return await FirebaseFirestore.instance.collection('users')
        .doc(uid).set(
      {
        "email": email,
        "password": password,
        "uid": uid,
        "token": -1,
        "userGoal": false,
        "userGender": false,
      },
    );
  }

  Future saveToRemote() async{
    Map<String, dynamic> data = UserManager.userdata;
    return await FirebaseFirestore.instance.collection('users')
        .doc(data['uid'])
        .set(data);
  }

class UserManager {
  static Map<String, dynamic> userdata = null;
}

如何将数据存储在子集合中?

编辑我创建了一个新的保存函数,但firestore创建了一个名为“uid”的新文档,而不是使用当前uid将数据存储在文档的子集合中。如何解决这个问题?

  Future saveInSubcollectionToRemote() async{
    Map<String, dynamic> data = UserManager.userWeights;
    return await FirebaseFirestore.instance.collection('users')
        .doc('uid')
        .collection('weights')
        .doc(data['userWeight'])
        .set(data);
  }

共有1个答案

罗毅
2023-03-14

保存到子集合与保存到顶级集合没有什么不同。您可以在用户文档下构建一条指向集合引用的路径,并按如下方式调用添加

FirebaseFirestore.instance
  .collection('users').doc(uid)
  .collection('subcollection').add(
      {
        "field": value,
      },
    );
 类似资料:
  • 我正在Firestore中制作一个“聊天演示”来保存信息,我是这样做的: 但问题是,文档显示它不存在,尽管它包含一个子集合。 正如上面写的:“这个文档不存在”,尽管它包含一个名为的子集合,其中包含更多文档。 但是我需要检查带有特定名称的文档是否存在于集合下。 我的代码是否有任何问题,或者我是否需要以其他方式进行? 提前谢谢。

  • 任务“:app:TransformDexArchiveWithExternAllibsDexMergerForDebug”执行失败 任务:cordovalib:compiledebubgshaders最新任务:cordovalib:generatedebugassets最新任务:cordovalib:packagedebugassets最新任务:app:mergedebugassets最新任务:a

  • 我正在尝试在WebStorm中创建一个自定义文件观察者,它将在保存时自动修复ESLint错误。在

  • 由于设置在Javascript是能够采取对象,包括数组,我如何找到一个数组列表中的集合的存在? 我尝试了以下代码: 我在假设 塞洛。有([“a”,“b”]) 由于我在集合中添加了精确的数组,所以应该输出true。我是否遗漏了一些虚假的事实或任何逻辑错误? 注: > 我不希望只匹配字符

  • 问题内容: 我很清楚这是可以做到的,并且我已经研究了很多地方(包括:保存整个收藏集的最佳实践?)。但是我仍然不清楚它到底是用代码编写的吗?(该帖子以英语进行了解释。最好有一个javascript特定的解释:) 假设我有一个模型集合- 模型本身可能具有嵌套集合。我已经重写了父集合的toJSON()方法,并且得到了一个有效的JSON对象。我希望“保存”整个集合(对应的JSON),但是主干似乎并没有内置

  • 我在VSCode中的Vue(Nuxt)项目中使用ESLint。当我保存时,我希望我的ESLint自动运行并自动修复所有警告。 这是我的设置。VSCode中的json文件: 这是我的。js文件: 链接的../.eslintrc。js文件包含以下内容: 编辑:我已经打开了详细输出,我在输出中看到了这一点: 然后我运行了yarn add eslint plugin import并重试,它仍然返回相同的错