#swift #firebase #google-cloud-firestore
#swift #firebase #google-cloud-firestore
Вопрос:
Изначально я создал коллекцию Users
в своей облачной базе данных Firestore с вложенной Wishlist
коллекцией .
Чтобы добавить в список желаний, я жестко запрограммировал следующее, чтобы проверить его работу:
let db = Firestore.firestore()
db.collection("users/JldiJEK5i84DZWhlTFg6/wishlist").addDocument(data: ["plant" : plants[0], "image" : plants[1]])
}
После нажатия кнопки завод отправляется в список пожеланий этого конкретного пользователя, и это работает — я вижу, что это добавляется в базу данных.
Как мне..Я не могу понять в документации, как не жестко кодировать идентификатор документа. Я бы хотел, чтобы он просто добавлял завод для каждого пользователя, вошедшего в систему?
Ответ №1:
Получить текущего пользователя:
let user = Auth.auth.currentUser
if let user = user {
_ = user.id
}
Затем:
let db = Firestore.firestore()
db.collection("users/(user?.uid ?? "error")").addDocument(data: ["plant" : plants[0], "image" : plants[1]])
Это работает для меня, когда я имею дело с людьми / клиентами, у меня просто есть документ с ошибкой в Firestore, но ваш пользователь, скорее всего, никогда не будет равен нулю, если он войдет в систему или создаст учетную запись.
Редактировать:
На всякий случай, это, вероятно, лучше и позволит избежать ненужных записей в Firestore при возникновении ошибки (экономия денег)
guard let currentUser = Auth.auth().currentUser {
print("handle the error")
return
}
let uid = currentUser.uid
...