Esta pregunta es para una aplicación móvil React Native Expo si eso importa.
Tengo un objeto de base de datos plano. Usando la documentación como ejemplo:
He agregado un campo/clave llamado "example.com" con algún valor arbitrario. El objeto entonces se ve así:
{ capital: "words", location: "other words", "example.com": "more words" }Quiero eliminar la clave "example.com" de la base de datos, y estoy usando prácticamente el mismo código que en el ejemplo de la documentación.
const cityRef = doc(db, "cities", "BJ"); const payload = { "example.com": deleteField(), }; await updateDoc(cityRef, payload);Esto no elimina la clave "example.com". Entiendo que esto intenta eliminar la clave "com" del objeto "ejemplo" dentro del documento principal de la base de datos, que no es lo que quiero, pero no entiendo cómo volver a trabajar este código para tratar la cadena completa como una clave.
Revisé algunas preguntas similares aquí en SO (enlaces en la parte inferior) que llegaron a la conclusión de que tenían que usar FieldPath , pero la sintaxis está desactualizada y ya no funciona en la versión actual de Firestore (o al menos puedo no encuentro la documentación de FieldPath para la versión que estoy usando, vinculada arriba).
Y se agradecerían consejos sobre cómo hacer que esto funcione (eliminar un campo con un punto).
Enlace a problemas similares:
Todavía necesita usar FieldPath, pero la API es diferente en el SDK del nuevo módulo v9. Puede ver FieldPath en los documentos de la API . Simplemente impórtelo junto con cualquier otra función que use desde Firestore SDK.
No lo he usado yo mismo, pero según los documentos vinculados, supongo que funciona así:
import { updateDoc, deleteField, FieldPath } from "firebase/firestore"; ... updateDoc(cityRef, new FieldPath("example.com"), deleteField());