我无法使用Express中的geofirestore从Firestore数据库中获取数据

时间:2019-10-30 09:11:42

标签: javascript express google-cloud-firestore geofirestore

我在express中创建了一个查询以提取我的数据 这是我对端点的快速表达功能:

app.get('/locatii', (req, res) => {
    const geofirestore = new GeoFirestore(db);
    const geocollection = geofirestore.collection('locatii2');
    const query = geocollection.near({
        center: new firebase.firestore.GeoPoint(45.831922, 27.431149),
        radius: 3000
    });
    query.get().then(snap => {
        console.log(snap.docs())
        let places = [];
        snap.forEach(doc => {
            places.push(doc.data());
            console.log(doc.data())
        });
        res.json(places);
    })
        .catch(err => res.send(err));
});

下面是我的解火结构:database structure 当我访问端点时,它不会显示在控制台数据或邮递员中。我也不知道我错过了什么。谢谢!

1 个答案:

答案 0 :(得分:1)

您的数据结构中似乎没有geohash。为了能够按文档位置查询这些文档,需要在每个文档中都包含一个geohash。

从GeoFirestoreJS随附的example app中,您似乎可以get the geohash进行以下操作:

location.lat = ...
location.lng = ...
const hash = geokit.Geokit.hash(location);

然后使用类似以下内容的方法将其设置到Firestore文档中:

documentRef.update(hash);