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

150
Vistas
Función Firebase con Converter Wipes Document Reference en Set()

Tengo una función programada que restablece un valor entero a cero en mi tienda de fuego. El problema con el que me estoy encontrando es que, si bien el conjunto de combinación tiene éxito (para las propiedades especificadas), de alguna manera restablece la referencia del documento de mi Organization a nulo.

Hasta ahora he probado lo siguiente

  • No usar un convertidor junto con la función Update() (en lugar de Set() ). Si bien esto funciona, no está tipificado, y tengo que deshacerme del convertidor que encapsula la conversión moment() to Date.
  • Usando Set() y simplemente pase el objeto completo.
 user.reference?.withConverter(userConverter).set(user)

Esto también funciona, pero anula todo el objeto del usuario y puede provocar problemas de simultaneidad en caso de que un usuario también actualice su objeto mientras se ejecuta la función cronometrada.

Estoy buscando una solución que me permita usar la clase de convertidor junto con un merge Set() .

La interfaz User se ve así

 export interface User extends Document { email?: string name?: string organization?: Organization | null numberOfForwards?: number lastForwardReset?: moment.Moment }

con su convertidor asi

 export class UserConverter implements firestore.FirestoreDataConverter<User> { toFirestore(user: User): firestore.DocumentData { return { email: user.email, name: user.name, organization: user.organization ? user.organization.reference : null, number_of_forwards: user.numberOfForwards, last_forward_reset: user.lastForwardReset?.toDate() } } fromFirestore(snapshot: firestore.QueryDocumentSnapshot): User { const data = snapshot.data()! return { reference: snapshot.ref, email: data.email, name: data.name, organization: data.organization ? { reference: data.organization } : null, numberOfForwards: data.number_of_forwards, lastForwardReset: moment(data.last_forward_reset.toDate()) } } }
 export const resetNumberOfForwards = functions.pubsub .schedule('every 15 minutes') .onRun(async () => { const reset = (user: User) => { console.log(`Resetting ${user.email} from [${user.numberOfForwards}] to [0]`) // Claim user reference user.reference ?.withConverter(userConverter) .set({ numberOfForwards: 0, lastForwardReset: Moment() }, { merge: true }) }

para que funcione el conjunto parcial, he incluido el siguiente fragmento en la parte superior de mi archivo

 firebase.firestore().settings({ ignoreUndefinedProperties: true })
about 4 years ago · Juan Pablo Isaza
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