Я выполняю миграцию базы данных на firebase, используя облачную функцию, запущенную на конечной точке http.
Я в основном прохожу базу данных и собираю словарь обновлений, чтобы затем вызвать ref (). Update (dict). Я делал это раньше и у меня не было с этим проблем, но из-за новой структуры БД мне нужно сделать что-то вроде
teamUpdates['/calendar/' + visibleMonths[month] + '/' + matchId] = minifiedEvent
Проблема в том, что по какой-то причине firebase не анализирует '/' как путь и, таким образом, выдает мне ошибку:
Первый аргумент содержит недопустимый ключ (/ calendar / February 2018 / -L5n0GL4OjV3fnRg2wYV).
Ключи должны быть непустыми строками и не должны содержать ".", "#", "$", "/", "[" Или "]".
В документации он использует символ '/' для определения путей, и я успешно использовал его раньше, поэтому я не знаю, в чем проблема. Есть идеи?
Вот что они делают в документах:
var updates = {};
updates['/posts/' + newPostKey] = postData;
updates['/user-posts/' + uid + '/' + newPostKey] = postData;
Я думаю, что происходит то, что у меня есть функция, которая возвращает объект с некоторыми обновлениями, а затем добавляет его ко второму объекту обновления (просто для того, чтобы очистить свою функцию, я строю объект в другой функции и возвращаю Это). Примерно так:
// This function returns the 'teamUpdates' object
const team = teamMigration(data[teamId])
// This is the dictionary that database.ref().update() gets called with
updates['/teams/' + teamId] = team
ОБНОВЛЕНИЕ 1: я реорганизовал код, чтобы убрать весь словарь 'teamUpdates' и напрямую вложить все под обновления ['/ crew /' + teamId].
выглядит некрасиво, но работает! Похоже, проблема в том, что firebase не анализирует '/' после первого уровня как путь, а вместо этого рассматривает их как ключи, что, очевидно, дает сбой.
Я подожду, чтобы проверить, подтвердит ли это член группы пожарных, прежде чем я отвечу на вопрос. Спасибо всем за помощь!