【发布时间】:2021-07-05 10:52:05
【问题描述】:
我可以做类似的事情..
String generateID(int len) {
const _chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
return List.generate(len, (index) => _chars[Random().nextInt(_chars.length)]).join();
}
...
var docId = generateID(5)
usersRef.doc(docID).set();
但为此,generateID() 可能会重复相同的字符串...导致文档被覆盖...
所以我目前正在做的是检查 generatedID 是否已经存在于集合中
usersRef.doc(docID).get()
.then((docSnapshot) => {
if (docSnapshot.exists) {
// ....
} else {
usersRef.doc(docID).set() // create the document
}
});
因此,firestore 可以自动创建具有其自动 ID 和特定长度的文档....或者这是唯一的方法...检查 id 是否存在,如果不存在则设置! ..?
【问题讨论】:
-
这是 Javascript 还是 Dart?我猜是基于箭头函数的 Javascript
-
这是飞镖……
-
这与语言无关...我只想知道当您可以指定其自动生成的ID的长度时,firestore是否具有功能...。如果没有,那就是这个最好的方法..您检查集合中是否存在 id 然后添加文档...
-
具有特定长度的 ID 是硬性要求(绝对强制性)吗?如果不是硬性要求,您可以依靠 Firestore 机制自动生成 ID:ID 在统计上保证是唯一的。
-
您可以将 Firestore 算法调整为更短的长度:github.com/firebase/firebase-js-sdk/blob/master/packages/…。来自弗兰克的回答:stackoverflow.com/questions/46618719/…
标签: firebase google-cloud-firestore