如何解决此Firebase云功能错误:无法读取属性

时间:2018-04-25 16:54:05

标签: javascript firebase google-cloud-firestore

我正在关注tutorial 我正在为项目添加一些Firebase云功能(步骤5)。我已成功将我的云功能部署到firebase,但在Firebase数据库控制台中手动添加新产品时没有任何反应。我发现Firebase云功能已被触发,但它出现了错误:" TypeError:无法读取属性&product;'未定义的"

我做错了什么?

AtomicInteger count = new AtomicInteger(0);
newList = someList.stream
.filter(a -> a.get().equals("red"))
.map(a -> new X(count.getAndIncrement()))
.collect(Collectors.toList());

2 个答案:

答案 0 :(得分:2)

该教程必须过时。函数SDK在发布1.0版时发生了一些变化。您可以阅读有关这些更改here

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

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

    const docId = context.params.productId;

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

答案 1 :(得分:0)

行。所以感谢Dough Stevensson的回答,通知我语法已经过时了,我现在有一个解决方案:

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