Есть ли какой-либо способ указать автоматически сгенерированный ключ, который firebase создает, когда вы помещаете объект в rtdb?

# #javascript #reactjs #firebase-realtime-database

Вопрос:

Я пытаюсь что-то вставить в firebase rtdb, и я хотел бы получить к нему доступ в другом месте довольно легко. Это то, что я использую для добавления в rtdb:

 function addStudentHandler(studentData) {
        fetch(
            "url that I put in real code",
            {
                method: "POST",
                body: JSON.stringify(studentData),
                headers: {
                    "Content-Type": "application/json",
                }
            }
        )
        .then (() => {
            history.replace("/");
        });
    }
 

Есть ли какое-либо значение заголовка или какое-либо другое значение, чтобы указать его вместо автоматически сгенерированных уникальных ключей? Я ценю любые ответы.

Ответ №1:

Это ваш собственный код, который сообщает Firebase генерировать уникальный ключ, потому что вы используете POST метод. Как указано в документации по сохранению данных:

POST : Добавить в список данных в нашей базе данных Firebase. Каждый раз, когда мы отправляем POST-запрос, клиент Firebase генерирует уникальный ключ, например fireblog/users/<unique-id>/<data>

Если вы хотите указать полный путь самостоятельно, вы можете использовать PUT , который задокументирован как:

PUT Запись или замена данных по определенному пути, например fireblog/users/user1/<data> .

Поэтому, когда вы указываете PUT , вы указываете весь путь для записи, Firebase не будет генерировать уникальный идентификатор под путем, а просто запишет указанное вами значение в указанный вами путь.


В вашем существующем коде:

 fetch(
    "url that I put in real code/user1.json", // 👈
    {
        method: "PUT",                        // 👈
        body: JSON.stringify(studentData),
        headers: {
            "Content-Type": "application/json",
        }
    }
)