0

我正在尝试在返回用户 UID 的 Firebase 中创建一个 Auth 对象。我希望能够使用该特定 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) 引用功能。我怎样才能做到这一点。

4

2 回答 2

3

你需要做

await storesCollection.doc(user.uid).set({...})

使用set()方法。事实上,没有add()方法 aGeoDocumentReferencestoresCollection.doc(user.uid)是 a GeoDocumentReference

add()方法是一种方法GeoCollectionReference

于 2019-12-11T14:16:39.400 回答
2

因为storesCollection是 a GeoCollectionReference,所以 API 并不总是与原生 Firestore 引用相同。

在您的特定情况下,您获得了要写入 using 的文档doc(id),但不是 usingadd(...)用于集合的 using ,而是需要使用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: []
  });
于 2019-12-11T15:19:50.147 回答