有没有一种方法可以创建Auth对象,并使用该UID通过GeoFirestore创建文档

时间:2019-12-11 13:29:31

标签: firebase react-native google-cloud-firestore geofirestore

我正在尝试在Firebase中创建一个Auth对象,该对象返回用户UID。我希望能够使用特殊的UID在集合中创建一个文档,但是geofirestore显然没有添加带有特定ID的文档的功能。

const storesCollection = geoFirestore.collection("retailers");
export const firstTimeStartCreateRetailer = ( email, password) => async dispatch => {
try {
  const { user } = await auth.createUserWithEmailAndPassword(email, password);
  await storesCollection.doc(user.uid).add({
    coordinates: new firebase.firestore.GeoPoint(33.704381, 72.978839),
    name: 'Freshlee',
    location: 'F-11',
    city: 'Islamabad',
    inventory: [],
    rating: 5,
    categories: []
  })
  dispatch({ type: LOGIN, payload: { ...user } });
 } catch (error) {
   console.log(error)
 }
};

该代码被拒绝,因为geoFirestore没有.doc(id)引用功能。我该如何实现。

2 个答案:

答案 0 :(得分:2)

您需要做

add()

使用set()方法。实际上,GeoDocumentReference没有storesCollection.doc(user.uid)方法,而GeoDocumentReferenceA B C C 3735.14 249.81 0.02 1999 1443.42 48.27 0.02 2009

add()方法是GeoCollectionReference的方法。

答案 1 :(得分:2)

由于storesCollectionGeoCollectionReference,因此该API并不总是与本地Firestore引用相同。

在特定情况下,您可以使用doc(id)获得要写入的文档,但是除了使用集合中使用的add(...)之外,还需要使用set(...)创建/覆盖该特定文档的数据。

await storesCollection.doc(user.uid).set({
    coordinates: new firebase.firestore.GeoPoint(33.704381, 72.978839),
    name: 'Freshlee',
    location: 'F-11',
    city: 'Islamabad',
    inventory: [],
    rating: 5,
    categories: []
  });