Как правильно обновить поля «Дата создания» и «Дата обновления» для документа в FireStore? - PullRequest
1 голос
/ 08 июля 2019

У меня есть коллекция документов под названием школы , для которой мы сохранили поля с именами создал в и обновил в . Я обновляю эти поля, используя функции облачного запуска Firestore в onCreate и onUpdate, соответственно.

Проблема, с которой я здесь сталкиваюсь, заключается в том, что эти обновления полей будут без необходимости вызывать триггер onUpdate. Для этого я написал дополнительную функцию skipOnUpdateTrigger

const excludeFields = ["createdAt", "UpdatedAt"]

shouldSkipOnUpdateTrigger = function(docDataOld, docDataNew, excludeFields){
    for(let i of excludeFields){
        if (docDataOld[i] !== docDataNew[i])
            return true;
 }
    return false;
}

Есть ли лучший способ справиться с этой ситуацией, чтобы избежать этих дополнительных триггеров?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

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

Вы можете применить это в правилах безопасности, проверив:

allow update: if request.resource.data.lastUpdated = request.time
1 голос
/ 08 июля 2019

Я думаю, у вас правильная идея.Вы должны сравнить снимки «до» и «после», чтобы убедиться, что произошло обновление, когда вы действительно хотите изменить метку времени.Нет никакого способа узнать , как произошло изменение (это может быть клиент или сервер), поэтому вам нужно посмотреть на сами данные.

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