Как добавить данные в облако Firestore без жесткого кодирования идентификатора документа коллекции пользователей в Swift

#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
...