我正在尝试将 geofirestore https://geofirestore.com/与 react native 一起使用,事实是我已经实现了在 firestore 中添加元素的方法,但是我在文档中读到数据必须由 geofirestore 添加方法。我是否必须更改所有方法并使用 firestore 方法?我使用 javascript 而不是 typeScript,我看到有一些带有 typescript 的示例,似乎他们已经更新了库,而其他示例不起作用。如何在 bbdd 中添加元素?我使用了geofirex,它非常简单,但没有限制,我想更改为geofirestore 才能使用此功能。谢谢!
2 回答
所以大多数(如果不是全部)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 中看到同样的东西,还有查询limit
和near
位置的额外好处!
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 使这个查看器应用程序保持最新。
这完美地工作
等待 eventRef.update({'d.arrUsers': firebase.firestore.FieldValue.arrayUnion(userUid)});
但是我无法完成这项工作,它是一张地图,我想在它正常工作之前添加另一个用户......
await eventRef.set({'d.userMap': { [userUid]: { name: name, age: age } }}, {merge: true});
如果我使用更新,它会删除存在的那个并放入新的,如果我这样做,它会从文档中的 d 中取出