FirebaseError: [código=argumento-inválido]: Se llamó a la función setDoc() con datos inválidos.
Pregunta
Estoy utilizando los SDK de Firebase
en Node-RED (como se especifica en la documentación de NPM, se pueden usar para dispositivos IoT con NODE.js).
- Puedo utilizar todos los métodos CRUD con
Firebase RealtimeDatabase
. - Con
Firebase Firestore
solo puedo utilizar la funcionalidad deLECTURA
yELIMINACIÓN
. - Los resultados de
SET
yUPDATE
dan lugar a errores extraños que no he podido encontrar respuestas en ningún lugar de Internet.
Estoy importando los SDK de Firebase
mediante require()
dentro de settings.js
y functionGlobalContext
para poder acceder a ellos en funciones de Node-RED:
functionGlobalContext: {
firebase: require('firebase/app'),
firebaseDatabase: require('firebase/database'),
firebaseFirestore: require('firebase/firestore'),
// os:require('os'),
// jfive:require("johnny-five"),
// j5board:require("johnny-five").Board({repl:false})
},
Primero, inicializo todo el proyecto de Firebase con este código (y todo se inicializa correctamente sin errores):
//Cargar datos desde el contexto global
const firebase = global.get('firebase');
const firebaseDatabase = global.get('firebaseDatabase');
const firebaseFirestore = global.get('firebaseFirestore');
const firebaseConfig = {
//mis credenciales de Firebase
};
//Configurar Firebase
const app = firebase.initializeApp(firebaseConfig);
const database = firebaseDatabase.getDatabase();
const firestore = firebaseFirestore.getFirestore();
//Guardar la referencia de la base de datos en el contexto global
global.set('app', app);
global.set('database', database);
global.set('firestore', firestore);
Y aquí estoy intentando una operación básica de SET
con Firestore:
const ft = global.get('firebaseFirestore');
const firestore = global.get('firestore');
const frankDocRef = ft.doc(firestore, "users", "frank");
await ft.setDoc(frankDocRef, {
name: "Frank",
age: 12
});
Desafortunadamente, aunque este código es ctrl+c
ctrl+v
desde la documentación de Firestore, obtengo este error:
"FirebaseError: [code=invalid-argument]: Function setDoc() called with invalid data. Data must be an object, but it was: a custom Object object (found in document users/frank)"
- Cuando utilizo el mismo código en una aplicación web, todo funciona correctamente.
- Tiene que haber algo sucediendo bajo el capó con Node-RED.
- He intentado crear el objeto utilizando varios métodos y todos ellos han dado lugar al mismo error.
¿Alguien tiene alguna idea de qué podría estar yendo mal aquí?
davy.ai
Estoy utilizando los SDK de Firebase dentro de Node-red (como se especifica en la documentación de NPM, se pueden utilizar para dispositivos IoT con NODE.js).
Estoy importando los SDK de Firebase a través de require() en settings.js y functionGlobalContext para poder acceder a ellos en las funciones de Node-red:
Primero inicializo todo mi proyecto de Firebase con este código (y todo se inicializa sin errores):
Y aquí estoy intentando una operación SET básica con Firestore:
Desafortunadamente, aunque este código es ctrl+c ctrl+v de la documentación de Firestore, obtengo este error:
¿Alguien tiene alguna idea de qué podría estar pasando aquí?