【发布时间】:2022-02-14 11:52:38
【问题描述】:
我正在尝试使用 Google Cloud 的 Pub/Sub API 向主题订阅者发送消息,但我遇到了返回消息“如果数据未定义,则必须存在至少一个属性”的问题.”。我打算将它与 Cloud Functions 一起使用。我有以下代码,它与官方 Pub/Sub NodeJS 文档相同,但有细微的变化:
exports.helloWorld = async (req, res) => {
const parse = require('url-parse');
const punycode = require('punycode');
const {PubSub} = require('@google-cloud/pubsub');
let message = req.query.message || req.body.message || 'Hello World!';
let referHeader = req.headers.referer;
let userIP = req.socket.remoteAddress;
let originHeader = req.headers.origin;
let userAgenteHeader = req.useragent;
let a = req.query.a;
let s = req.query.s;
let e = req.query.e;
try {
const pubSubClient = new PubSub({
project_id: 'my-project',
credentials: {
private_key: "my_private_key",
client_email: 'email_project@myemail.com',
}
});
a = 123; //Change for test
let topicNameOrId = 'MY_TOPIC_ID';
const data = JSON.stringify({
"data": "analytics",
"attributes": {
"a": a
}
});
const dataBuffer = Buffer.from(data);
const messageId = await pubSubClient
.topic(topicNameOrId)
.publishMessage(dataBuffer);
res.status(200).send(`Message ${messageId} published.`);
} catch (error) {
console.error();
res.status(403).send(`${error.message}`);
process.exitCode = 1;
}
};
我试过用 JSON.stringify 来做,没有它,直接在函数中,但没有任何效果,它总是给出同样的错误,我正在正常传递数据参数。
【问题讨论】:
标签: javascript node.js google-cloud-functions google-cloud-pubsub