Swift - Cloud Firestore 中的唯一 ID

Posted

技术标签:

【中文标题】Swift - Cloud Firestore 中的唯一 ID【英文标题】:Swift - Unique ID in Cloud Firestore 【发布时间】:2018-04-23 22:39:18 【问题描述】:

我在使用 Cloud Firestore 生成随机唯一 ID 时遇到问题。以前我使用实时数据库并生成随机字符串,我使用childByAutoID().key

有没有办法为 Cloud Firestore 做类似的事情?

正如 Jay 在 cmets 中所说,这不是重复的,因为我正在尝试生成随机字符串,而不是尝试获取随机文档。

【问题讨论】:

Firestore: How to get random documents in a collection的可能重复 @AchrefGassoumi 这个问题与这个问题并没有真正的关系。在这里,用户询问如何在 Firestore 中生成随机节点密钥。在您链接的问题中,用户是如何从数据库中随机选择节点(与键无关)。不过,我的问题是——Firestore 有一个真正不同的思维方式来存储带有集合和文档的数据,并且真正扩展了父->子模型,它消除了对随机节点键的依赖。您能否提供一个用例说明为什么需要随机字符串? 【参考方案1】:

如果您创建的文档没有明确的 Id,我们的 SDK 会自动为您随机生成一个。

// Add a new document with a generated id.
var ref: DocumentReference? = nil
ref = db.collection("messages").addDocument(data: [
    "sender": "<my_senders_id>",
    "recipient": "<my_recipient_id>",
    "message": "Hello from Google Cloud Platform & Firebase!",
    "status": "unread"
])  err in
    if let err = err 
        print("Error adding document: \(err)")
     else 
        print("Document added with ID: \(ref!.documentID)")
    

【讨论】:

但是如果它不是一个文档路径,我还能如何生成它? 我没有听懂你的问题?还会在哪里?请记住,Cloud Firestore 的结构是集合和文档(可以有自己的集合和文档),而不是巨大的 JSON 树。 有没有办法为 Firestore 做 queryStarting(atValue: String, childKey: String)? 最好将其他问题作为新问题而不是在 cmets 中提出。更多人会以这种方式看到/找到它。【参考方案2】:

要生成随机id,

let ref = db.collection("somePath")
let docId = ref.document().documentID

【讨论】:

以上是关于Swift - Cloud Firestore 中的唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章

如何从Swift中的Cloud FireStore Firebase访问特定字段

Swift - Cloud Firestore 中的唯一 ID

Swift 和 Cloud Firestore 事务 - getDocuments?

Firebase Firestore + Cloud Function 服务器端验证应用内购买收据(Swift + NodeJS)

在使用 Swift 的 iOS 应用程序中使用 DispatchQueue 等待数据从 Cloud Firestore 返回时遇到问题

init() 中的 Swift Array.append 不能与 Firestore (Google Cloud/FIrebase) 结合使用