调用 Firebase Pub/Sub 触发器函数但事件为空

Firebase Pub/Sub trigger function is called but event is null

我成功发布到主题:

gcloud pubsub topics publish my-topic --message '{"value":"data"}' --attribute value=myValue

并且可以使用 gcloud 命令成功查看条目:

gcloud beta pubsub subscriptions pull --auto-ack my-subcription

然后我创建了一个 firebase pubsub onPublish 触发函数,如下所示:

exports.myfunction = functions.pubsub.topic('my-topic').onPublish(event => {

     const attributes = event.data.attributes;
     const message = event.data.json;

     const value= attributes['value'];
     const data = {
         key: value,
         key2: message.value
     };

     let ref= db.collection('devices').doc(value);

     return updateTheDataInMyFirestore(ref, data);
});

我的目标是更新我的 firestore 中的数据以维护实时数据。该函数已调用,但事件始终为 null,当我尝试访问属性时出现错误“TypeError:无法读取未定义的 属性 'value'”。我不明白为什么会这样。

PubSub 处理函数接收第一个参数,它是一个 Message 类型的对象。 (你称它为 event。)根据我链接到的 API 文档,Message 对象有一个名为 json 的 属性,这是已解析的 JSON 来自消息有效负载的数据。

您似乎假设消息中的 data.attributes 包含负载。它没有。使用消息 json 属性 代替:

exports.myfunction = functions.pubsub.topic('my-topic').onPublish(message => {
    const payload = message.json
    console.log(payload)

    const value = payload.value

    // continue processing...
});