Вы можете сгенерировать ключ Firebase pu sh заблаговременно (он генерируется клиентом, а не сервером) и затем прочитать его в переменную. Затем вы можете опубликовать данные в БД, используя сохраненный ключ.
См .: https://firebase.google.com/docs/database/admin/save-data
// Generate a reference to a new location and add some data using push()
var newPostRef = postsRef.push();
// Get the unique key generated by push()
var postId = newPostRef.key;
Обновление: Вот пример кода Unity из документации Firebase, который показывает использование .pu sh (). Введите ключ вместе, чтобы получить ключ, который затем будет использован позже.
"Чтобы создать LeaderboardEntry и одновременно обновить его до последней ленты результатов и собственного списка результатов пользователя, игра использует такой код :
private void WriteNewScore(string userId, int score) {
// Create new entry at /user-scores/$userid/$scoreid and at
// /leaderboard/$scoreid simultaneously
string key = mDatabase.Child("scores").Push().Key;
LeaderBoardEntry entry = new LeaderBoardEntry(userId, score);
Dictionary<string, Object> entryValues = entry.ToDictionary();
Dictionary<string, Object> childUpdates = new Dictionary<string, Object>();
childUpdates["/scores/" + key] = entryValues;
childUpdates["/user-scores/" + userId + "/" + key] = entryValues;
mDatabase.UpdateChildrenAsync(childUpdates);
}
В этом примере Pu sh () используется для создания записи в узле, содержащей записи для всех пользователей в ключе / scores / $, и одновременного получения ключа с помощью ключа. Затем ключ может быть используется для создания второй записи в баллах пользователя по адресу /user-scores/$userid/$key.
Используя эти пути, вы можете выполнять одновременное обновление нескольких мест в дереве JSON одним вызовом to UpdateChildrenAsyn c (), например, как в этом примере создается новая запись в обоих расположениях. Одновременные обновления выполняются следующим образом: atomi c: либо все обновления выполнены успешно, либо все обновления не выполнены. "