2

我正在尝试将 geofirestore https://geofirestore.com/与 react native 一起使用,事实是我已经实现了在 firestore 中添加元素的方法,但是我在文档中读到数据必须由 geofirestore 添加方法。我是否必须更改所有方法并使用 firestore 方法?我使用 javascript 而不是 typeScript,我看到有一些带有 typescript 的示例,似乎他们已经更新了库,而其他示例不起作用。如何在 bbdd 中添加元素?我使用了geofirex,它非常简单,但没有限制,我想更改为geofirestore 才能使用此功能。谢谢!

4

2 回答 2

4

所以大多数(如果不是全部)Typescript 示例几乎与您在 JS 中所做的相同(以及常规的 firebase 库)。让我给你一个添加和查询(有限制)的例子react-native-firebase

import firebase from 'react-native-firebase';

const doc = {
   coordinates: new firebase.firestore.GeoPoint(0, 0),
   name: 'The center of the WORLD'
};

const collection = firebase.firestore().collection('todos');

collection.add(doc).then((docRef) => {
   collection.limit(100).get().then((querySnapshot) => {
      // 100 items in query
      querySnapshot.docChanges.forEach((change) => {
         console.log(change.doc);
      });
   });
});

现在我从未使用过 RNF,但从文档中我可以得出这是正确的,并且它们几乎所有的事情都与 JS Firebase 库相同(除了docChanges作为数组返回而不是返回数组的函数......) . 无论如何,让我们在 Geofirestore 中看到同样的东西,还有查询limitnear位置的额外好处!

import firebase from 'react-native-firebase';
import { GeoFirestore } from 'geofirestore';

const doc = {
   coordinates: new firebase.firestore.GeoPoint(0, 0),
   name: 'The center of the WORLD'
};

const geofirestore = new GeoFirestore(firebase.firestore());
const geocollection = geofirestore.collection('todos');

geocollection.add(doc).then((docRef) => {
   geocollection.limit(100).near({
      center: new firebase.firestore.GeoPoint(0, 0),
      radius: 10
   }).get().then((querySnapshot) => {
      // 100 items in query within 10 KM of coordinates 0, 0
      querySnapshot.docChanges().forEach((change) => {
         console.log(change.doc);
      });
   });
});

无论如何,不​​要害怕 Typescript 代码示例,如果你只是剥离: GeoFirestore或任何它是有效的 JS ......

// This in TS
const firestore = firebase.firestore();
const geofirestore: GeoFirestore = new GeoFirestore(firestore);

// Is this in JS
const firestore = firebase.firestore();
const geofirestore = new GeoFirestore(firestore);

最后,如果有帮助,我会尝试使用 Vanilla JS 使这个查看器应用程序保持最新。

于 2019-03-08T06:47:08.070 回答
0

这完美地工作

等待 eventRef.update({'d.arrUsers': firebase.firestore.FieldValue.arrayUnion(userUid)});

但是我无法完成这项工作,它是一张地图,我想在它正常工作之前添加另一个用户......

await eventRef.set({'d.userMap': { [userUid]: { name: name, age: age } }}, {merge: true});

如果我使用更新,它会删除存在的那个并放入新的,如果我这样做,它会从文档中的 d 中取出

于 2019-03-09T22:06:21.803 回答