J'essaie d'insérer un document dans une collection. Je veux que le document ait un attribut de type reference
à insérer dans la collection. Mais chaque fois que j'insère dans la collection, elle sort sous forme de chaîne ou d'objet. Comment puis-je insérer par programme une valeur typée reference
?
Il est certainement possible de le faire dans l'interface utilisateur:
La solution la plus simple est probablement de définir la valeur d'une clé de référence sur une doc(collection/doc_key)
.
Exemple de code:
post = {
conetnet: "content...",
title: "impresive title",
user: db.doc('users/' + user_key),
};
db.collection('posts').add(doc)
La valeur du champ doit être de type DocumentReference
. Il semble que vous y mettiez un autre objet qui possède une propriété appelée id
qui est une chaîne.
J'essayais de comprendre cela aujourd'hui et la solution que j'ai trouvée était d'utiliser la .doc()
pour créer une référence de document
firebase.firestore()
.collection("applications")
.add({
property: firebase.firestore().doc(`/properties/${propertyId}`),
...
})
Cela stockera un type DocumentReference dans le champ property
donc lors de la lecture des données, vous pourrez accéder au document comme tel
firebase.firestore()
.collection("applications")
.doc(applicationId)
.get()
.then((application) => {
application.data().property.get().then((property) => { ... })
})
Il s'agit de la classe de modèle à stocker dans le magasin de pompiers.
import { AngularFirestore, DocumentReference } from '@angular/fire/firestore';
export class FlightLeg {
date: string;
type: string;
fromRef: DocumentReference; // AYT Airport object's KEY in Firestore
toRef: DocumentReference; // IST {key:"IST", name:"Istanbul Ataturk Airport" }
}
J'ai besoin de stocker l'objet FlightLeg avec une valeur de référence. Pour ce faire:
export class FlightRequestComponent {
constructor(private srvc:FlightReqService, private db: AngularFirestore) { }
addFlightLeg() {
const flightLeg = {
date: this.flightDate.toLocaleString(),
type: this.flightRevenue,
fromRef: this.db.doc('/IATACodeList/' + this.flightFrom).ref,
toRef: this.db.doc('/IATACodeList/' + this.flightTo).ref,
} as FlightLeg
.
..
this.srvc.saveRequest(flightLeg);
}
Le service qui peut enregistrer l'objet référencé à un autre objet dans firestore:
export class FlightReqService {
.
..
...
saveRequest(request: FlightRequest) {
this.db.collection(this.collRequest)
.add(req).then(ref => {
console.log("Saved object: ", ref)
})
.
..
...
}
}