Firebase updateChildValues ​​в iOS, что более оптимизировано? - PullRequest
0 голосов
/ 08 ноября 2018

Я работаю над приложением для iPhone (Swift 4), я делаю некоторые обновления в своей базе данных на нескольких узлах одновременно.

Оба следующих метода работают, но мне интересно, что является самым "чистым"один ?

Путь 1:

 let idNotification = BaseViewController.database.child("notifications").childByAutoId().key
        BaseViewController.database.child("notifications").child(idNotification).updateChildValues(["content" : "some content"])
        BaseViewController.database.child("users").child(userID).child("notifications").updateChildValues(["something" : true])

Путь 2:

    let idNotification = BaseViewController.database.child("notifications").childByAutoId().key
    let createNotif = ["content" : "some content"]
    let notifToUser = ["something" : true]
    BaseViewController.database.updateChildValues(["/notifications/\(idNotification)" : createNotif, "/users/\(userID)/notifications" : notifToUser])

И если это имеет какое-то значение в случае аварии?В первом случае, если один из двух запросов на обновление потерпит неудачу, другой не будет затронут.Что происходит со способом 2, если происходит сбой только для одного из двух?

Спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

Первый фрагмент отправляет несколько операций записи в базу данных (по одной на каждый вызов updateChildValues). Второй фрагмент отправляет ровно одну операцию записи.

Оба варианта полностью действительны, и любой из них может быть тем, что вы хотите. Например, если между двумя обновлениями нет никакой связи, то имеет смысл отправлять их отдельно. Но если обновления связаны, имеет смысл отправлять их за один раз, поскольку это позволяет правилам безопасности вашей базы данных разрешать / отклонять их как одну операцию записи.

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