Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

151
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!