让我们说我在Firestore集合中有以下文档:
我如何可以随机获取一个或多个文档而不必全部下载?
顺便说一句,我已经看过Dan McGrath's Answer,但是他没有具体说明如何为Flutter生成自动ID,而且,我很想在Dart中看到一个完整的示例,因为他的解释非常通用。
预先感谢!
答案 0 :(得分:0)
根据Dan的回答,这是我目前的实现方式。
static const AUTO_ID_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
static const AUTO_ID_LENGTH = 20;
String _getAutoId() {
final buffer = StringBuffer();
final random = Random.secure();
final maxRandom = AUTO_ID_ALPHABET.length;
for (int i = 0; i < AUTO_ID_LENGTH; i++) {
buffer.write(AUTO_ID_ALPHABET[random.nextInt(maxRandom)]);
}
return buffer.toString();
}
要查询的代码:
final autoId = _getAutoId();
final query = ref
.where("qId", isGreaterThanOrEqualTo: autoId)
.orderBy("qId")
.limit(count);
QuerySnapshot response = await query.getDocuments();
if (response.documents == null || response.documents.length == 0) {
final anotherQuery = ref
.where('qId', isLessThan: autoId)
.orderBy('qId')
.limit(count);
response = await anotherQuery.getDocuments();
}
一些解释:
如有任何疑问,请询问。我会尽力提供帮助。
祝你有美好的一天!