Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何从GCP函数GUI调用PubSub函数_Google Cloud Platform_Google Cloud Functions_Google Cloud Pubsub - Fatal编程技术网

Google cloud platform 如何从GCP函数GUI调用PubSub函数

Google cloud platform 如何从GCP函数GUI调用PubSub函数,google-cloud-platform,google-cloud-functions,google-cloud-pubsub,Google Cloud Platform,Google Cloud Functions,Google Cloud Pubsub,我部署了以下功能: interface MessageData { reviewId: string; } export const applyPreAssessRules = functions .pubsub.topic("applyPreAssessRules") .onPublish(async (message) => { const { reviewId } = message.json as MessageData; ... } 云平台GU

我部署了以下功能:

interface MessageData {
  reviewId: string;
}

export const applyPreAssessRules = functions
  .pubsub.topic("applyPreAssessRules")
  .onPublish(async (message) => {
    const { reviewId } = message.json as MessageData;
    ...
  }
云平台GUI提供了一个页面来测试功能,但我不知道如何格式化输入

我尝试过几件事,包括:

{"reviewId": "LRuvmv14u7c47IRiravi"}
我一直得到以下输出:

错误:函数执行失败。细节: 第一个参数必须是string、Buffer、ArrayBuffer、Array或类似数组的Object类型之一。接收类型未定义

我错过了什么


我已经使用Firebase部署了该函数。不知道这是否有区别…

事实上,@eespinola几乎把你指向了正确的方向。如果仔细检查he提供的,您会发现云函数默认订户代码段:

/**
*从云发布/子主题上的消息触发。
*
*@param{object}pubsub消息云发布/订阅消息对象。
*@param{string}pubsubMessage.data云发布/订阅消息的“data”属性。
*/
exports.subscribe=(pubsubMessage)=>{
//打印Pub/Sub中的数据,以证明其有效
log(Buffer.from(pubsubMessage.data,'base64').toString());
};
此代码段显示pubsub事件包含一个名为“data”的字段,该字段是base64编码的字符串。此外,如果您在API文档中搜索PubSub,您将找到消息的语法:

{
  "data": string,
  "attributes": {
    string: string,
    ...
  },
  "messageId": string,
  "publishTime": string
}

因此,您需要使用该格式将负载编码为base64字符串,并将其转换回函数中的Javascript对象。

仅供确认。功能在Firebase中按预期工作,但不在GCP中?功能本身运行正常。我想知道如何将一个有效的JSON负载从GCP传递给它,因为我们有这个测试。这里有一些关于如何在PubSub中使用云函数的示例。根据您得到的错误,我认为您应该使用
JSON.stringify(messageObject)
JSON.stringify()
方法将对象转换为JSON字符串。我想你没有领会我的意思。我知道如何以编程方式调用pubsub函数。我想知道GUI的功能,所以我想我应该说GUI而不是UI。我将编辑这个问题。我担心这将是答案。在这种情况下,UI作为一个易于使用的界面是非常无用的。它应该为这些属性提供字段,并将JSON转换为base64,以便在数据中使用。要求用户在UI之外转换它简直是胡说八道。我将提交一个功能请求。
{"message": { "json": {"reviewId": "LRuvmv14u7c47IRiravi"}}}
{
  "data": string,
  "attributes": {
    string: string,
    ...
  },
  "messageId": string,
  "publishTime": string
}