Вызываемая функция Firebase не работает - PullRequest
0 голосов
/ 16 мая 2018

Это часть моего index.js файла:

const firebase = require("firebase");
const functions = require('firebase-functions');
// Firebase Setup
const admin = require('firebase-admin');
const serviceAccount = require('./service-account.json');
const cors = require('cors')({ origin: true });
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

exports.addMessage = functions.https.onCall((data, context) => {
    const sanitizedMessage = sanitizer.sanitizeText("test");
    return admin.database().ref('/messages').push({
        text: sanitizedMessage
    }).then(() => {
        console.log('New Message written');
        return { text: sanitizedMessage };
    })
});

Эта функция успешно загружена в Firebase. Я пытаюсь позвонить с моего веб-клиента, используя этот код:

var addMessage = firebase.functions().httpsCallable('addMessage');
addMessage({text: "test"}).then(function(result) {
    var sanitizedMessage = result.data.text;
    console.log(sanitizedMessage);
});

Результатом является ошибка со следующим описанием:

enter image description here

Кроме того, в консоли Firebase нет журнала. Если я захожу по ссылке напрямую, я получаю сообщение журнала. Что подразумевает две вещи:

  1. URL-адрес моей функции правильно составлен моим веб-клиентом.
  2. Учитывая, что его посещение напрямую приводит к записи журнала в консоли Firebase, это означает, что мой веб-клиент даже не выполняет этот вызов.

Я застрял, следуя официальному руководству .

Любая помощь в отладке это очень ценится.

Ответы [ 2 ]

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

Я тщательно попробовал и протестировал ваш код, и могут возникнуть две проблемы.

Я предполагаю, что вы намереваетесь использовать этот дезинфицирующий пакет npm: https://www.npmjs.com/package/sanitizer,, поэтому эти проблемы могут быть:

  1. Вам не требуется дезинфицирующее средство. (Вы установили это, кстати?)
  2. sanitizeText не является методом модуля sanitazer, в то время как sanitize является

Следующий код работает хорошо:

const functions = require('firebase-functions');
const sanitizer = require('sanitizer');
const admin = require('firebase-admin');
const cors = require('cors')({ origin: true });
admin.initializeApp();

exports.addMessage = functions.https.onCall((data, context) => {
    const sanitizedMessage = sanitizer.sanitize("test");
    console.log(sanitizedMessage);

    return admin.database().ref('/messages').push({
        text: sanitizedMessage
    }).then(() => {
        console.log('New Message written');
        return { text: sanitizedMessage };
    })
});
0 голосов
/ 16 мая 2018
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cors = require('cors')({ origin: true });
admin.initializeApp();

exports.addMessage = functions.https.onCall((data, context) => {
    const sanitizedMessage = sanitizer.sanitizeText("test");
    return admin.database().ref('/messages').push({
        text: sanitizedMessage
    }).then(() => {
        console.log('New Message written');
        return { text: sanitizedMessage };
    })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...