web-dev-qa-db-ja.com

どのようにして「参照」値をfirestoreに挿入しますか?

ドキュメントをコレクションに挿入しようとしています。ドキュメントに、コレクションに挿入するreference型の属性を持たせたい。しかし、コレクションに挿入するたびに、文字列またはオブジェクトとして出力されます。 reference型付きの値をプログラムで挿入するにはどうすればよいですか?

enter image description here


UIでそれを行うことは間違いなく可能です。

enter image description here

11
AskYous

おそらく最も簡単な解決策は、参照キーの値をdoc(collection/doc_key)に設定することです。

サンプルコード:

post = {
        conetnet: "content...",
        title: "impresive title",
        user: db.doc('users/' + user_key),
    };

db.collection('posts').add(doc)
15
trojek

フィールドの値は、タイプ DocumentReference でなければなりません。文字列であるidというプロパティを持つ他のオブジェクトをそこに配置しているようです。

3
Doug Stevenson

私は今日これを理解しようとしていましたが、私が来た解決策は.doc()を使用してドキュメント参照を作成することでした

  firebase.firestore()
    .collection("applications")
    .add({
      property: firebase.firestore().doc(`/properties/${propertyId}`),
      ...
    })

これにより、propertyフィールドに DocumentReference タイプが格納されるため、データを読み取るときにドキュメントにアクセスできるようになります。

  firebase.firestore()
    .collection("applications")
    .doc(applicationId)
    .get()
    .then((application) => {
      application.data().property.get().then((property) => { ... })
    })
3
Phillip Boateng

これは、Firestoreに格納するモデルクラスです。

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

FlightLegオブジェクトを参照値と共に保存する必要があります。これを行うためには:

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

別のオブジェクトを参照してオブジェクトをFirestoreに保存できるサービス:

export class FlightReqService {
   .
   ..
   ...
  saveRequest(request: FlightRequest) {
    this.db.collection(this.collRequest)
           .add(req).then(ref => {
              console.log("Saved object: ", ref)
           })
   .
   ..
   ...
  }
}
2
uzay95