我想将用户信息及其 id(而不是文档 id)存储在文档中。
我想生成像 XYZ0001 这样的 id 特定格式,只要有新用户添加,最后 4 位数字就会自动增加。
例如,XYZ0001、XYZ0002 之类的。
我已经尝试过这个...
return firestore
.collection("xyzData")
.doc(resp.user.uid)
.set({
firstName: newUser.firstName,
lastName: newUser.lastName,
email: newUser.email,
ca_id: "XYZ" + pad(firestore.collection("xyzData").count())
})
.then
其中 pad() 是一个函数,它给出最后 4 位数字
function pad(n) {
var s = "000" + n;
return s.substr(s.length - 4);
}
但这给了我一个错误,即 count() 不是一个函数
另外,我正在考虑另一种方法,我可以读取最后一个 id 的值,然后为下一个用户将其加一,但bust将无法实现它。
2022 年秋季更新
在 2022 年 Firebase 峰会上,Firebase 宣布 Cloud Firestore 现在支持count()聚合查询. count()
允许您确定集合或查询中的文档数量。
旧答案,2022 年秋季之前
请注意,没有count()
的方法CollectionReference。如果您想知道集合中的文档数量,您需要致电异步 get()方法得到一个QuerySnapshot
然后使用size财产。但是,您无法将呼叫传递给get()
作为对象的属性。
解决方案是维护自己的计数器。
有两种标准方法:
Use firebase.firestore.FieldValue.increment()
正如所解释的在文档中你可以打电话firebase.firestore.FieldValue.increment()
增加 Firestore 文档的特定字段。例如,您可以将一个文档放在counter
每次想要从序列中获取新值时都会递增和读取的集合。根据您的具体用例,您可能需要使用Transaction.
另请注意,“您每秒只能更新单个文档一次”。
分布式计数器
如果您需要更新您的柜台文件每秒不止一次,您应该使用分布式计数器,如doc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)