geofirestore 不返回个人文档数据

geofirestore not returning individual document data

我们正在使用 geofirestore npm package 获取附近的文档。

这是我们用来获取这些文档的 Cloud Function。

exports.getNearbyOffers = functions.https.onCall((data, context) => {
    const offers = GeoFirestore.collection('restaurants');

    const center : GeoPoint = new admin.firestore.GeoPoint(data["sourceLat"], data["sourceLng"]);

    const query = offers.near({center: center, radius: 100,});

    return query.get().then((value) => {
        console.log(value.docs);
        return value.docs;
    }).catch((err: any) => {
        console.log(err);
    });
});

客户端的输出是:

[{data: {}, distance: 0, exists: true, id: LdaLz30gv16Gv68Xw92i}, {data: {}, distance: 0, exists: true, id: Ux1Et5afklvZC4IKEkJy}, {data: {}, distance: 0, exists: true, id: h4kdFZpsn1UwPpTvPMxC}, {data: {}, distance: 0, exists: true, id: oqWfc41cfiWAcnvufVFd}, {data: {}, distance: 0, exists: true, id: pH0qW0V9rY43zvgkPQm8}]

查询正在返回正确的文档 ID。然而,这些文档的数据是空的,但是,在Firestore控制台中,每个对应的文档都有很多带有数据的字段(名称、评级、地址等)。

这是预料之中的,因为您只获得了快照。您需要 运行 每个文档的 data() 函数来获取他们的数据:

query.get().then((value) => {
// All GeoDocument returned by GeoQuery, like the GeoDocument added above
  for (const doc of value.docs) {
    console.log(doc.data());
  }