相关疑难解决方法(0)

Flutter Firestore 检索随机 Firestore 文档

我希望有人可以帮助我完成以下实现:我只想从 firestore 检索随机文档。

按照这个使用自动 ID 版本的流行指南,我使用自动生成的文档 ID 并将它们保存为 field idFirestore:如何获取集合中的随机文档

[..]自动 ID 版本 如果您使用我们的客户端库中提供的随机生成的自动 ID,您可以使用同一系统随机选择文档。在这种情况下,随机排序的索引是文档 id。[...]

为查询获取随机 id 似乎是显而易见的,但对于我来说,作为菜鸟,我不确定从哪里随机获取自动 id 值以及如何在_randomIndex不运行查询的情况下适合我的值。我该如何定义我的_randomIndex现在?

QuerySnapshot querySnapshot = await ref
        .where('id', isGreaterThanOrEqualTo: _randomIndex)
        .orderBy('id', descending: true)
        .limit(1)
        .get();
Run Code Online (Sandbox Code Playgroud)

解决方案

谢谢大家!我认为对于更多的人来说,如何通过查看上述指南并使用flutter来实现给定的方法可能并不是那么简单。

例如,我在 flutter 上下文中听到有关 uuid 和随机 id 的信息,总是向我推荐流行的库,例如https://pub.dev/packages/uuid/examplehttps://pub.dev/packages/flutter_guid/install

就我而言,它们不起作用,感谢@Jigar Patel,我们现在可以完美地随机化它。在下面的例子中我们还可以确定文档的数量:

import 'dart:math';

String getRandomGeneratedId() {
  const int AUTO_ID_LENGTH = 20;
  const String AUTO_ID_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  
  const int maxRandom = AUTO_ID_ALPHABET.length;
  final Random …
Run Code Online (Sandbox Code Playgroud)

firebase flutter google-cloud-firestore

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

Swift - Cloud Firestore中的唯一ID

我在使用Cloud Firestore生成随机唯一ID时遇到问题.以前我使用实时数据库并生成一个我使用的随机字符串childByAutoID().key.

有没有办法为Cloud Firestore做类似的事情?

正如杰伊在评论中所说,这不是重复,因为我正在尝试生成一个随机字符串,我不是想要随机文档.

database firebase swift google-cloud-firestore

5
推荐指数
2
解决办法
2531
查看次数

从Firestore中选择随机文档

我在Cloud Firestore的单个集合中有1000个文档,是否可以提取随机文档?

举例来说:Students是Firestore中的一个集合,我有1000个学生,我的要求是每次通话随机选择10个学生。

java android firebase google-cloud-firestore

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

Firestore,如何构建“likedBy”查询

我在思考如何最好地构建我的(非常简单的)Firestore 应用程序时遇到了一些麻烦。我有一组这样的用户:

users: {
   'A123': {
      'name':'Adam'
   },
   'B234': {
      'name':'Bella'
   },
   'C345': {
      'name':'Charlie'
   }
}
Run Code Online (Sandbox Code Playgroud)

...并且每个用户都可以“喜欢”或“不喜欢”任意数量的其他用户(例如 Tinder)。

我想构建一个“喜欢”表(或 Firestore 等效表),以便我可以列出我还没有喜欢或不喜欢的人。我最初的想法是在用户表中创建一个“喜欢”对象,其布尔值如下所示:

users: {
   'A123': {
      'name':'Adam',
      'likedBy': {
         'B234':true,
      },
      'disLikedBy': {
         'C345':true
      }
   },
   'B234': {
      'name':'Bella'
   },
   'C345': {
      'name':'Charlie'
   }
}
Run Code Online (Sandbox Code Playgroud)

这样,如果我是 Charlie 并且我知道我的 ID,我可以列出我还没有喜欢或不喜欢的用户:

var usersRef = firebase.firestore().collection('users')
.where('likedBy.C345','==',false)
.where('dislikedBy.C345','==',false)
Run Code Online (Sandbox Code Playgroud)

这不起作用(每个人都被列出)所以我怀疑我的方法是错误的,尤其是“==false”部分。有人可以指出我如何构建这个的正确方向吗?作为一个额外的问题,如果有人改变了他们的名字会发生什么?我是否需要更改所有嵌入的“likedBy”数据?或者我可以使用云功能来实现这一点吗?

谢谢!

node.js firebase google-cloud-firestore

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