我希望有人可以帮助我完成以下实现:我只想从 firestore 检索随机文档。
按照这个使用自动 ID 版本的流行指南,我使用自动生成的文档 ID 并将它们保存为 field id。
Firestore:如何获取集合中的随机文档
[..]自动 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/example和https://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) 我在使用Cloud Firestore生成随机唯一ID时遇到问题.以前我使用实时数据库并生成一个我使用的随机字符串childByAutoID().key.
有没有办法为Cloud Firestore做类似的事情?
正如杰伊在评论中所说,这不是重复,因为我正在尝试生成一个随机字符串,我不是想要随机文档.
我在Cloud Firestore的单个集合中有1000个文档,是否可以提取随机文档?
举例来说:Students是Firestore中的一个集合,我有1000个学生,我的要求是每次通话随机选择10个学生。
我在思考如何最好地构建我的(非常简单的)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”数据?或者我可以使用云功能来实现这一点吗?
谢谢!