Как решить эту облачную функцию Firebase Ошибка: не удается прочитать свойство - PullRequest
0 голосов
/ 25 апреля 2018

Я следую учебнику , в котором я добавляю некоторые функции Firebase Cloud в свой проект (шаг 5).Я успешно развернул свою облачную функцию в firebase, но ничего не происходит, когда я вручную добавляю новый продукт в консоль базы данных Firebase.Я обнаружил, что облачная функция Firebase запущена, но выдает ошибку: " TypeError: Невозможно прочитать свойство 'productId' из неопределенного "

Что я делаю неправильно?

const functions = require('firebase-functions');

    const admin = require("firebase-admin");
    admin.initializeApp(functions.config().firebase);


    exports.sendMessage = functions.firestore
        .document('products/{productId}')
        .onCreate(event => {

        const docId = event.params.productId; // <-- error here

        const name = event.data.data().name;
        const productRef = admin.firestore().collection('products').doc(docId)
        return productRef.update({ message: `Nice ${name}! - Love Cloud Functions`})

    });

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

OK.Так что благодаря ответу Теста Стивенсона, уведомляющему меня о том, что синтаксис старый, у меня есть решение:

const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);

var db = admin.firestore();

exports.sendMessage = functions.firestore
    .document('products/{productId}')
    .onCreate((snapshot, context) => {

       const docId = context.params.productId;

       const productRef = db.collection('products').doc(docId)
       return productRef.update({ message: `Nice ${name}!`})
    });
0 голосов
/ 25 апреля 2018

Этот урок должен быть устаревшим.Некоторые вещи изменились в Functions SDK, когда вышла версия 1.0.Вы можете прочитать об этих изменениях здесь .

Триггерам базы данных теперь передаются два параметра вместо одного.Новый контекстный параметр содержит значение подстановочных знаков в ссылочном пути:

exports.sendMessage = functions.firestore
    .document('products/{productId}')
    .onCreate((snapshot, context) => {

    const docId = context.params.productId;

Если вы хотите продолжить работу с этим учебником, вам придется вручную преобразовать все его старые материалы в новые.

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