我正在使用这个库https://geofirestore.com/在给定坐标内不存在其他文档的情况下,在集合中创建文档。现在,我应该在Cloud函数中或直接在应用程序中使用此库的方法进行事务处理吗?
我个人认为没有理由在云端做这件事,尽管我可能错了,所以我征求你的意见。
const geocollection = GeoFirestore.collection('chats');
const query = geocollection.limit(1).near({ center: new firebase.firestore.GeoPoint(latitude, longitude), radius: 0.03 });
GeoFirestore.runTransaction((transaction) => {
const geotransaction = new GeoTransaction(transaction);
return geotransaction.get(query).then((sfDoc) => {
if (sfDoc.exists) {
sfDoc.docs.forEach(documentSnapshot => {
if (documentSnapshot.exists) {
firestore().collection('chats')
.doc(documentSnapshot.id)
.get()
.then((res) => {
// insert new document
geocollection.add({
name: 'Geofirestore',
uid: device_id,
coordinates: new firebase.firestore.GeoPoint(latitude, longitude),
created: currenttime
})
})
}
});
} else {
geocollection.add({
name: 'Geofirestore',
uid: device_id,
coordinates: new firebase.firestore.GeoPoint(latitude, longitude),
created: currenttime
})
}
});
});
如果您希望文档的位置在其集合中是唯一的,请考虑使用该位置作为文档ID的基础,或使用从该位置派生的一些值(如哈希或Geofirestore使用的地理哈希(。