Javascript 在Firestore中分配增量用户ID号
我们有一个带有google firestore DB的vuejs项目,我们需要为所有用户分配一个唯一的文件号。它必须是数字,6位数字,从000052开始 我们有大约4500名用户 我想使用谷歌云功能。如何将此文件编号分配给每个用户,并且每个用户的文件编号都会递增Javascript 在Firestore中分配增量用户ID号,javascript,google-cloud-firestore,google-cloud-functions,Javascript,Google Cloud Firestore,Google Cloud Functions,我们有一个带有google firestore DB的vuejs项目,我们需要为所有用户分配一个唯一的文件号。它必须是数字,6位数字,从000052开始 我们有大约4500名用户 我想使用谷歌云功能。如何将此文件编号分配给每个用户,并且每个用户的文件编号都会递增 我正在尝试使用firestore的limit查询来查找前一个用户,然后在当前用户中增加文件,等等,但这似乎很笨拙 db.collection('users').orderBy(id).get() .then((snapshot) =&g
我正在尝试使用firestore的limit查询来查找前一个用户,然后在当前用户中增加文件,等等,但这似乎很笨拙
db.collection('users').orderBy(id).get()
.then((snapshot) => {
snapshot.forEach(doc => {
let last = snapshot.docs[snapshot.docs.length - 1];
let next = db.collection('users')
.startAfter(last.data().id)
.limit(1)
db.collection('users').doc(next.id).set({
fileId: last.id++
})
})
})
我可以想到几个选择:
- 只要您:
- 按降序ID排序,以确保获得最后/最高ID
- 使用事务更新数据库,使用安全规则拒绝用户覆盖现有ID
- 如果您有一个将这些ID用作文档键的集合,那么保证唯一性可能更简单,因为根据定义,ID在其集合中是唯一的。这可以是当前/主集合,也可以是仅跟踪声明的ID的辅助集合。在这里,事务+安全规则也是确保唯一性的关键
- 或者,您可以在方案中生成一个随机ID,然后执行与前面方法相同的事务+规则逻辑
- 您还可以创建一个文档,该文档保留您提供的最高ID,然后为每个新用户读写该文档。同样,这需要在事务中完成。这与有多少数据库系统增加其自动增量值非常接近