typescript - Je li moguće pristupiti FieldValue koristeći Node.js cloud funkcije?


Pokušavam ukloniti korisnika iz mape koju sam deklarirao u FireStoreu. Ali kako da dobijem vrijednost polja? Mislim da bi to trebalo biti nešto poput ovoga firestore.FieldValue.arrayRemove(user.uid), samo što firestore nema objekt FieldValue. Kako mogu ukloniti korisnika iz mape korisnika?

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

const firestore = admin.firestore();

export const onUserDeleted = functions.region('europe-west1').auth.user().onDelete(async user => {
    const groups = await firestore.collection('groups').where('users', 'array-contains', user.uid).get();
    const promises : Promise<FirebaseFirestore.WriteResult>[] = [];
    groups.forEach(snapshot => {
        promises.push(snapshot.ref.update({
            'users' : ,
        }));
    }); 
    return await Promise.all(promises);
});

Odgovor #1

Prilikom korištenja Firebase Admin SDK-a, koristeći import prikazan u vašem kodu, referencirate FieldValue preko admin.firestore.FieldValue.

Odgovor #2

Napomena: Pokušao sam gore navedeno rješenje i to nije uspjelo.

Tražio sam ovo cijeli dan i pronašao rješenje u jednom od Firebase NodeJS repozitorija sa snippetovima. Znam da nije u Typescriptu pa samo promijeni import prema potrebi.

// for the import part
const {getFirestore, FieldValue} = require("firebase-admin/firestore");
// also, getFirestore is another import I needed and you might not so change accordingly

// for the update
await admin
 .firestore()
 .collection("Posts").doc(docId).update({
   postImages: FieldValue.arrayUnion(signedUrl),
 }).then((_) => {
    functions.logger.log("Updated the image link successfully");
 });

Povezani članci