Используя Firestore DB с swift 4.0, сохранение в базу данных создает случайный символьный документ при каждой аутентификации - PullRequest
0 голосов
/ 07 февраля 2019

Я создаю приложение для iPhone в Swift 4.0.Я подключаюсь к Firestore, который сейчас работает.Проблема, с которой я сталкиваюсь, состоит в том, что случайный символ - документ, создается каждый раз, когда пользователь проходит аутентификацию.Я хочу изменить это, чтобы адрес электронной почты был зарегистрированным документом в БД, поэтому при следующем входе в систему с теми же учетными данными используется тот же документ.

let databaseRef = Database.database().reference(fromURL: “*****************”)
let storage = Storage.storage().reference()
let db = Firestore.firestore()
var ref: DocumentReference? = nil
var handle: AuthStateDidChangeListenerHandle?
var checkBtnTitle:Bool = true


    override func viewDidLoad() {
    super.viewDidLoad()
        if Auth.auth().currentUser != nil {
            let currentUser = Auth.auth().currentUser
            btnLogOut.title = "LogOut"
            btnLogin.title = "Login"
            var ref: DocumentReference? = nil
            ref = db.collection("Solicitor").addDocument(data: [
                "userID": currentUser?.email! as Any,
                "Name": currentUser?.displayName as Any
            ]) { err in
                if let err = err {
                    print("Error adding document: \(err)")
                } else {
                    print("Document added with ID: \(ref!.documentID)")
                }
            }
        } else {
            btnLogOut.title = "Login"
            btnLogin.title = ""
        }

      // google signin
       GIDSignIn.sharedInstance()?.uiDelegate = self

Image of DB and random generated character

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

спасибо за вашу помощь в этом.Я наконец смог сохранить его ... Мне не нужна была часть 'ref =' в БД.

 let currentUser = Auth.auth().currentUser
 let businessEmail = Auth.auth().currentUser?.email!
 db.collection("Solicitor").document(businessEmail!).setData([

Кстати, я все еще получаю автоматически сгенерированный идентификатор, а также идентификатор документа (адрес электронной почты) пользователя.У кого-нибудь есть какие-либо предложения о том, как остановить это поведение?

0 голосов
/ 07 февраля 2019

При вызове addDocument() Firestore создайте новый документ с автоматически сгенерированным идентификатором.Если вы хотите контролировать идентификатор документа, вы должны использовать методы document() и setData().Например:

ref = db.collection("Solicitor").document(currentUser?.email!).setDate(data: [
    "userID": currentUser?.email! as Any,
    "Name": currentUser?.displayName as Any
])

Подробнее об этом см. Документацию Firebase о добавлении документов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...