您可以使用 swift 将字符串附加到 Firebase 数组吗

mar*_*k32 1 arrays ios firebase swift google-cloud-firestore

我正在跟踪用户是否喜欢 firebase 中的餐厅,但我目前正在使用字符串来执行此操作。我知道可以在 Firebase 中更新数组,但根据我所读到的内容,为了执行此操作,每次要添加新元素时都需要重写整个数组。有什么方法可以将字符串附加到数组末尾吗?如果这是不可能的,有谁知道比仅使用字符串更好的替代方法吗?

这就是我现在正在使用的:

var likedBarsGlobal: [String] = [] {
    didSet {
        var lb = ""
        for i in 1...likedBarsGlobal.count - 1 {
            if(i == likedBarsGlobal.count - 1){
                lb += "\(likedBarsGlobal[i])"
            } else {
                lb += "\(likedBarsGlobal[i]), "
            }
        }

        db.collection("users").document(userId).updateData(["likedBars": lb ]) { (error) in
            if error != nil {
                print(error)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 5

Firestore 有一个特殊的记录操作,可以使用FieldValue.arrayUnion()将单个项目附加到数组的末尾:

let washingtonRef = db.collection("cities").document("DC")

// Atomically add a new region to the "regions" array field.
washingtonRef.updateData([
    "regions": FieldValue.arrayUnion(["greater_virginia"])
])
Run Code Online (Sandbox Code Playgroud)

如果您想对数组进行任何更改而不是添加或删除单个项目,则必须读取该数组,修改它,然后将其写回。