从AngularFirestoreCollection查询中获取单个AngularFirestoreDocument

时间:2018-06-18 15:57:00

标签: firebase google-cloud-firestore angularfire2 angularfire5

在Firestore中,我的uid文档中有一个Vendor字段:

/vendors
    +doc1
        uid: 1
    +doc2
        uid: 2

要访问供应商,我使用以下功能:

getVendor(index: string): AngularFirestoreDocument<Vendor> {
    return afs.doc<Vendor>(`vendors/${index}`);
}

我想创建一个类似的函数,它也会返回AngularFirestoreDocument,但该函数需要uid来获取文档:

getVendorByUID(uid: string): AngularFirestoreDocument<Vendor> {

    ...

    return theDoc;
}

似乎我必须查询AngularFirestoreCollection,但不知道如何从集合中提取文档。

1 个答案:

答案 0 :(得分:1)

我建议使用uid作为记录的键;这样,您就可以通过带有{getVendor

的URL进行引用

否则,您需要查询:

// Query the first vendor where the uid matches
afs.collection<Vendor>(`vendors`, ref => ref.where('uid', '==', uid).limit(1))
  .valueChanges()
  .pipe(
    map(vendors => vendors[0]) // flatten the result
  );