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

194
Vistas
función firebase con error de base de datos en tiempo real

Soy nuevo en la función firebase y trato de usar la función firebase con la base de datos en tiempo real (suite del emulador). Pero cuando trato de establecer el valor en firebase usando la función firebase, da un error y no establece el valor en la base de datos.

Error:

 17:33:14 I function[us-central1-textToLength] [2021-11-05T12:03:14.194Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway. 17:34:18 I function[us-central1-textToLength] [2021-11-05T12:04:18.762Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway. 17:35:06 I function[us-central1-textToLength] [2021-11-05T12:05:06.473Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway. 17:35:54 I function[us-central1-textToLength] [2021-11-05T12:05:54.409Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway.

código de la función firebase:

 const functions = require('firebase-functions'); var admin = require("firebase-admin"); admin.initializeApp(); var database = admin.database(); exports.helloWorld = functions.https.onRequest((request, response) => { response.send("Hello from Firebase!"); }); exports.textToLength = functions.https.onRequest((request, response) => { var tex = request.query.text; var textLength = tex.length; console.log(textLength); database.ref().child('test').set("op"); response.send(String(textLength)); });

dependencias:

 { "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { "serve": "firebase emulators:start --only functions", "shell": "firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "engines": { "node": "14" }, "main": "index.js", "dependencies": { "firebase-admin": "^9.8.0", "firebase-functions": "^3.14.1", "@firebase/database-compat": "0.1.2" }, "devDependencies": { "firebase-functions-test": "^0.2.0" }, "private": true }

paquetes instalados npm

 +-- @firebase/app-compat@0.1.7 | +-- @firebase/app@0.7.6 | | +-- @firebase/component@0.5.8 | | | +-- @firebase/util@1.4.1 deduped | | | `-- tslib@2.3.1 deduped | | +-- @firebase/logger@0.3.1 | | | `-- tslib@2.3.1 deduped | | +-- @firebase/util@1.4.1 | | | `-- tslib@2.3.1 deduped | | `-- tslib@2.3.1 deduped | +-- @firebase/component@0.5.8 | | +-- @firebase/util@1.4.1 deduped | | `-- tslib@2.3.1 deduped | +-- @firebase/logger@0.3.1 | | `-- tslib@2.3.1 deduped | +-- @firebase/util@1.4.1 | | `-- tslib@2.3.1 deduped | `-- tslib@2.3.1 +-- @firebase/database-compat@0.1.2 | +-- @firebase/component@0.5.7 | | +-- @firebase/util@1.4.0 deduped | | `-- tslib@2.3.1 deduped | +-- @firebase/database@0.12.2 | | +-- @firebase/auth-interop-types@0.1.6 | | +-- @firebase/component@0.5.7 deduped | | +-- @firebase/logger@0.3.0 deduped | | +-- @firebase/util@1.4.0 deduped | | +-- faye-websocket@0.11.4 | | | `-- websocket-driver@0.7.4 | | | +-- http-parser-js@0.5.3 | | | +-- safe-buffer@5.2.1 deduped | | | `-- websocket-extensions@0.1.4 | | `-- tslib@2.3.1 deduped | +-- @firebase/database-types@0.9.1 | | +-- @firebase/app-types@0.7.0 | | `-- @firebase/util@1.4.0 deduped | +-- @firebase/logger@0.3.0 | | `-- tslib@2.3.1 deduped | +-- @firebase/util@1.4.0 | | `-- tslib@2.3.1 deduped | `-- tslib@2.3.1 deduped `-- firebase-admin@10.0.0 +-- @firebase/database-compat@0.1.2 deduped +-- @firebase/database-types@0.7.3 | `-- @firebase/app-types@0.6.3 +-- @google-cloud/firestore@4.15.1 | +-- fast-deep-equal@3.1.3 | +-- functional-red-black-tree@1.0.1 | +-- google-gax@2.28.0
over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

No estoy seguro de la causa de ese mensaje de registro, pero veo que está devolviendo una respuesta de su función antes de que complete todo su trabajo. En una función implementada, tan pronto como la función regresa, todas las acciones posteriores deben tratarse como si nunca fueran a ejecutarse como se documenta aquí . Una función "inactiva" puede cancelarse en cualquier momento, está severamente limitada y es posible que nunca se ejecuten las llamadas de red que realice (como la configuración de datos en la RTDB).

Sé que eres nuevo en esto, pero es un buen hábito para adoptar ahora: no asumas que la persona que llama a tu función eres tú. Compruebe si hay problemas como parámetros de consulta faltantes y datos dudosos antes de actuar a ciegas. Admin SDK pasa por alto las reglas de seguridad de su base de datos y, si no tiene cuidado, un usuario malintencionado puede causar algún daño (por ejemplo, un usuario que actualiza /users/$theirUid/roles/admin a true ).

 exports.textToLength = functions.https.onRequest((request, response) => { const { text: queryText } = request.query; if (!queryText) return response.status(400).send("Missing ?text"); if (typeof queryText !== 'string') return response.status(400).send("Bad value for ?text"); const textLength = queryText.length; database.ref() .child('test') .set("op") .then(() => { console.log(`Successfully updated /test/op to ${textLength}`); response.send(String(textLength)) }) .catch((err) => { console.error(`Failed to update /test/op to ${textLength}: `, error); response.status(500).send(`Failed to update database to ${textLength}`) }); ; });

Nota: Al implementar funciones de solicitud HTTPS , no olvide manejar CORS .

over 4 years ago · Santiago Trujillo Denunciar

0

Mientras tanto, si tiene la última versión del SDK de administrador, puede anclar @firebase/database-compat a la versión 0.1.2 en su archivo package.json como una solución temporal.

"dependencias": { "@firebase/database-compat": "0.1.2" }

Esto funciona para mí.

Referencia: https://github.com/firebase/firebase-admin-node/issues/1487

over 4 years ago · Santiago Trujillo Denunciar

0

Sí, problema definitivamente conocido, actualmente están trabajando en una solución como Kasirajan sugirió https://github.com/firebase/firebase-admin-node/issues/1487#issuecomment-962219551 . Esta solución funcionó para nosotros. Quería votar su comentario, pero mi reputación aún es baja jaja, pero puedo verificar que funciona.

over 4 years ago · Santiago Trujillo Denunciar

0

Mientras tanto, si tiene la última versión del SDK de administrador, puede anclar @firebase/database-compat a la versión 0.1.2 en su archivo package.json como una solución temporal.

"dependencies": { "@firebase/database-compat": "0.1.2" }

Esto funciona para mí.

Referencia: https://github.com/firebase/firebase-admin-node/issues/1487

Hice referencia a este ejemplo y funcionó, pero para que esto funcione, reconstruya su archivo package-lock.json eliminando la carpeta node_modules y el archivo package_lock.json y ejecutando npm install --package-lock-only

over 4 years ago · Santiago Trujillo 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