Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

275
Vistas
Si los datos no están definidos, al menos un atributo debe estar presente pubsub

Estoy tratando de usar la API Pub/Sub de Google Cloud para enviar mensajes a los suscriptores del tema, pero tengo un problema en el que devuelve el mensaje " Si los datos no están definidos, al menos un atributo debe estar presente ". Lo voy a usar con Cloud Functions. Tengo el siguiente código, que es el mismo que la documentación oficial de Pub/Sub NodeJS con cambios menores:

 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; } };

He intentado hacerlo con JSON.stringify, sin él, directamente en la función, pero nada funcionó, siempre da el mismo error y estoy pasando el parámetro de datos normalmente.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Probé tu código y pude reproducir tu error. Después de depurar su código, se atascó cuando usa publishMessage() . Aparentemente , publiqueMessage() acepta un objeto de mensaje .

publicarMensaje(mensaje: OpcionesMensaje): Promesa<[cadena]>;

Use la publicación () en su lugar, acepta el objeto de búfer .

publicar (datos: Búfer, atributos?: Atributos): Promesa;

Aplique la publicación () en su código, use la solución a continuación:

 const messageId = await pubSubClient.topic(topicNameOrId).publish(dataBuffer);

Salida de la función de nube:

ingrese la descripción de la imagen aquí

Mensaje real de Pubsub:

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda