【问题标题】:Create Number Counter that increments by 1 per the last number assigned [closed]创建数字计数器,每个分配的最后一个数字增加 1 [关闭]
【发布时间】:2018-07-03 16:37:51
【问题描述】:

我希望将一个名为“quoteIdentifier”的变量分配给一个递增的整数。我的用例是每次有人向我的 firestore 数据库提交报价时,报价都会自动分配一个整数作为排序 ID。

所以如果我的第一个用户在表单中输入他们的信息 - 它会分配整数 1 然后第二个用户输入他们的信息,代码引用分配的最后一个整数,并递增 1.. 所以类似于 lastEntryInt ++。这甚至可以引用最后分配的值吗?也许我从firestore字段中读取了最后分配的内容?任何帮助将不胜感激!

【问题讨论】:

  • 我很好奇为什么您需要一个递增的整数来同步所有用户?你能不能只分配一个随机的唯一 ID,上传到 FireStore,然后根据 ID 的数量查询用户数量?还是有理由需要增加 1?
  • 我很赞同这种计数器通常并不理想,因为它们成为多用户应用程序中的争论点。也就是说:事务正是针对这种“读取当前值和更新”操作的。你可以在这里阅读它们:firebase.google.com/docs/firestore/manage-data/…。由于文档中确实涵盖了这一点,因此我将结束您的问题,因为它过于宽泛。如果您在执行交易时遇到问题,请随时再次发布。
  • 我需要它的原因是因为我使用它来引用随机引用的报价。我使用了关于随机数和 Firestore 查询的上一篇文章,但是一旦我运行代码生成随机报价,我分配的数字范围在 1-5000 之间,有时我会得到重复,甚至没有得到其他的在数据库中。这是因为有些人在 4000 中自动分配一个随机整数,而其他可能在 400 中分配的整数因此我试图得到它,以便我知道随机拉动将在一个合理的范围内。有意义吗?
  • 我认为您应该研究一下云功能。您可以让云函数分配递增值并跟踪(在单独的文档中)当前值。有了当前值,就可以写出更好的随机引用选择器函数。

标签: swift google-cloud-firestore


【解决方案1】:

您为什么不使用这样的随机密钥生成器,而不是使用递增的数字:

func returnRandomKey(usrname: String) -> String {
    let key = String(arc4random()) + usrname 
    return key
}

这也可以工作

另外,如果要跟踪用户数量,可以使用递增变量

【讨论】:

  • 好主意!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 2016-07-08
  • 2015-05-03
  • 2016-02-06
  • 2015-09-13
  • 1970-01-01
相关资源
最近更新 更多