如何在 firebase 中创建对象数组

How to create array of objects in firebase

我正在开发一个汽车租赁应用程序的项目。该应用程序可以由具有不同角色的管理员和用户访问。所以目前我正在使用 api / 在 firebase

中手动保存管理员添加的汽车
     let vehicle = Vehicle(make: make, model: modell, price: price, mileage: mileage)
     db.collection("Admin").document("car").setData(from: vehicle) 

其中 vehicle 是具有 make model mileage 等属性的对象。现在有了这个功能,我总是保存一个对象。如果我添加一个新对象,它会覆盖它我如何在汽车文档中存储多个对象。

当你第二次运行上面的语句时它是“更新”而不是“添加”的原因是你使用相同的DocumentID,你指定为“汽车” .

如果您是 运行 添加多个 vehicle 文档的 for-loop 函数,您可以修改类似于以下示例的代码。

方法一

let vehicleDocID: Int = 0

let vehicle = Vehicle(make: make, model: modell, price: price, mileage: mileage)

for vehicle in vehicleS {
     vehicleDocID += 1
     db.collection("Admin").document("\(vehicleDocID)").setData(from: vehicle) 

}

或者,您可以简单地使用 .add() 函数来获取 defaultID,这是我个人推荐的。

方法二

var ref: DocumentReference? = nil
ref = db.collection("Admin").addDocument(data: [
    "make": "make",
    "model": "modell",
    "price": "price",
    "mileage": "mileage"
]) { err in
    if let err = err {
        print("Error adding document: \(err)")
    } else {
        print("Document added with ID: \(ref!.documentID)")
    }
}

最后,如果车辆数量较多(>100辆),建议使用批量写入的方式将文档添加到Firestore,这样可以保证更好的性能。批量写入可以参考下面的Firestore文档。

https://firebase.google.com/docs/firestore/manage-data/transactions