pushRef.set () не является функцией, запрос Firebase - PullRequest
0 голосов
/ 13 июня 2018

Это мой код:

var pushRef = currentAssignment.child('answers').push().catch(e => console.log('push', e));
pushRef.set({
    // downloadURL: downURL,
    textAnswer: textAnswer,
    date: this.generateDate(),
    seen: false,
    // firebaseKey: pushRef.getKey(),
    workKey: this.props.questionId
})

Когда я пытаюсь запустить его, я получаю эту ошибку: pushRef.set(), но согласно этой части документации выглядитя как будто делаю все одинаковоВот пример инструкции толчка Google:

var postsRef = ref.child("posts");
var newPostRef = postsRef.push();
newPostRef
    .set({
        author: "gracehop",
        title: "Announcing COBOL, a New Programming Language"
    });

// we can also chain the two calls together
postsRef
    .push()
    .set({
        author: "alanisawesome",
        title: "The Turing Machine"
    });

Так чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Ваш код ожидает, что catch() возвращает ссылку на базу данных.Это не - catch() всегда возвращает обещание.

Использование catch здесь не нужно, потому что push () без аргументов является полностью локальной операцией.Он возвращает ссылку на базу данных, которая также может быть использована как обещание ( ThenableReference ).

Если есть какая-либо ошибка, которую можно здесь отловить, она относится к обещанию, возвращенному набором () .Этот вызов не будет выполнен, если правила безопасности будут нарушены во время операции записи.

0 голосов
/ 13 июня 2018

Добавляя .catch(e => console.log('push', e)) за push(), вы изменяете его из ссылки на базу данных Firebase на что-то другое.Поэтому удаление, которое исправит это.

Насколько я знаю, вызов push() (без параметров) никогда не приведет к ошибке, он просто генерирует ссылку на клиентскую часть (уникальный ключ) firebase.

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