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");
});
