我正在尝试在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)引用功能。我该如何实现。
答案 0 :(得分:2)
您需要做
add()
使用set()
方法。实际上,GeoDocumentReference
没有storesCollection.doc(user.uid)
方法,而GeoDocumentReference
是A B C C
3735.14 249.81 0.02 1999
1443.42 48.27 0.02 2009
。
add()
方法是GeoCollectionReference
的方法。
答案 1 :(得分:2)
由于storesCollection
是GeoCollectionReference
,因此该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: []
});