Javascript 如何解决此Firebase云函数错误:无法读取属性

Javascript 如何解决此Firebase云函数错误:无法读取属性,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我在下面的一个例子中添加了一些Firebase云函数到我的项目中(步骤5)。我已经成功地将我的云功能部署到firebase,但在firebase数据库控制台中手动添加新产品时,什么都没有发生。我发现Firebase cloud函数被触发,但它得到了一个错误:“TypeError:无法读取未定义的属性“productId”” 我做错了什么 const functions = require('firebase-functions'); const admin = require("fir

我在下面的一个例子中添加了一些Firebase云函数到我的项目中(步骤5)。我已经成功地将我的云功能部署到firebase,但在firebase数据库控制台中手动添加新产品时,什么都没有发生。我发现Firebase cloud函数被触发,但它得到了一个错误:“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`})

    });
const functions=require('firebase-functions');
const admin=require(“firebase管理员”);
admin.initializeApp(functions.config().firebase);
exports.sendMessage=functions.firestore
.document('products/{productId}'))
.onCreate(事件=>{

const docId=event.params.productId;//该教程必须已过时。当Functions SDK发布1.0版时,其中的某些内容已发生更改。您可以阅读这些更改

数据库触发器现在传递两个参数,而不是一个。新的上下文参数包含引用路径中通配符的值:

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

    const docId = context.params.productId;

如果您想继续学习该教程,您必须手动将其所有旧内容转换为新内容。

该教程必须已过时。当Functions SDK发布1.0版时,有些内容已发生更改。您可以阅读这些更改

数据库触发器现在传递两个参数,而不是一个。新的上下文参数包含引用路径中通配符的值:

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

    const docId = context.params.productId;

如果您想继续学习该教程,您必须手动将其所有旧内容转换为新内容。

好的。多亏史蒂文森的回答告诉我语法是旧的,我现在有了一个解决方案:

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}!`})
    });

好的。多亏史蒂文森的回答告诉我语法很旧,我现在有了一个解决方案:

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}!`})
    });

击败我:)+1击败我:)+1你忘了在这里定义名称。感谢你寻找正确的方法来完成这项艰巨的任务!你忘了在这里定义名称。感谢你寻找正确的方法来完成这项艰巨的任务!