Как получить ключи БД перед загрузкой в ​​Firebase Admin Python SDK - PullRequest
0 голосов
/ 10 мая 2018

Я использую Firebase Admin Python SDK в лямбда-функции AWS.Я хочу вставить в БД несколько объектов в одном обновлении.

 for mess in arrayMessages:

    ...

    newMessageKey = root.child('.../messages').push().key

    messages_updates[newMessageKey] = {
            'author': 'Bob',
            'dateTime': d,
            'text': mess,
    }

    messagesKeys.append(newMessageKey)

    ...

root.child(''.../messages').set(messages_updates)

Метод "... push (). Key" сразу создает ключ в БД (тогда имеет смысл перейти непосредственно в одну команду, но теряют эффективность обновлений).Выполняя Обновления без нажатия, вставьте инкрементные целочисленные клавиши (тривиальная последовательность 0,1,2 ...)

Как и SDK для Android Client (предназначенный для перевода ключей даже в автономном режиме),Есть ли решение получить ключ еще до создания объекта в БД?

Ответы [ 2 ]

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

Невозможно использовать admin SDK.Однако есть порт Python кода JS, который используется для генерации идентификаторов на стороне клиента .

Майкл Лехенбауэр из команды Firebase описал реализацию в статье блога .Там вы также можете найти ссылку на GitHub с описанием реализации , которая, в свою очередь, содержит комментарий со ссылкой на реализацию Python выше.

0 голосов
/ 10 мая 2018

Будет ли полезно следующее?

new_message = root.child('.../messages').push({
    'author': 'Bob',
    'dateTime': d,
    'text': mess,
})
messagesKeys.append(new_message.key)

Клиенты базы данных на основе REST API базы данных реального времени (например, Python Admin SDK) не поддерживают генерацию идентификаторов на стороне клиента. Так что это лучший вариант, который вы получили. FWIW, сделать 2 вызова API, как вы сделали выше, тоже не так уж плохо. SDK будет использовать то же HTTP-соединение внизу и попытаться уменьшить задержку.

...