web-dev-qa-db-fra.com

Comment insérez-vous une valeur de "référence" dans un magasin de produits coupe-feu?

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?

enter image description here


Il est certainement possible de le faire dans l'interface utilisateur:

enter image description here

11
AskYous

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)
15
trojek

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.

3
Doug Stevenson

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) => { ... })
    })
3
Phillip Boateng

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)
           })
   .
   ..
   ...
  }
}
2
uzay95