Javascript 使用URL从Firestore检索文档
我有一个具有这种结构的Firestore DBJavascript 使用URL从Firestore检索文档,javascript,google-cloud-firestore,Javascript,Google Cloud Firestore,我有一个具有这种结构的Firestore DB -user [root collection] --userid [doc] --work [sub collection] --documentID [document with required data] 我希望用户能够单击他们获得的链接,例如: mysite.com/work.html?work=documentID 这将打开mysite.com/work.html页面,将数据从documentID拉入页面,并将命名文
-user [root collection]
--userid [doc]
--work [sub collection]
--documentID [document with required data]
我希望用户能够单击他们获得的链接,例如:
mysite.com/work.html?work=documentID
这将打开mysite.com/work.html页面,将数据从documentID拉入页面,并将命名文档中的数据显示给用户
或者,他们可以输入的网址
mysite.com/users/work/documentID.
并显示相同的信息
用户在采取任何操作之前都会先登录。
堆栈是Firestore、Firebase托管、节点和云函数、jQuery
我不知道我是不是很笨,但我真的不知道如何开始做这项工作——在各种各样的搜索中找到一个空白来寻找如何做到这一点,所以我真的很感谢一些帮助 您可以用以下方法解决此问题- 当用户点击链接
mysite.com/work.html?work=documentID
时,创建一个路由器来处理给定的请求。由于用户已登录,您可以从请求中收集uid和documentId。在firestore中,您可以使用类似于col/doc/subcollection
第二个创建函数来处理路由,它将从firestore中检索数据,如下所示-
文件_read.js
const admin = require('firebase-admin');
admin.initializeApp
const db = admin.firestore();
async function readData(uid, docId){
const snapshot = await db.collection('users/${uid}/work').doc(docId).get();
const data = snapshot.data();
//Do something with your data and return results here
}
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
}
}
此函数将数据返回到需要显示详细信息的所需页面
最后,您需要使用安全规则保护firestore数据不受未经授权的请求,以便仅允许文档所有者读取/写入数据-
消防商店规则
const admin = require('firebase-admin');
admin.initializeApp
const db = admin.firestore();
async function readData(uid, docId){
const snapshot = await db.collection('users/${uid}/work').doc(docId).get();
const data = snapshot.data();
//Do something with your data and return results here
}
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
}
}
你可以在这里读更多
希望这有帮助 那看起来很有用,谢谢。很抱歉,在查看答案时耽搁了很长时间。最后我使用了一个urlparms查询。然而,我对你的回答很感兴趣。当你说“创建一个路由器来处理给定的请求”时,你没有说在哪里、做什么以及如何。。。这就是我困惑的地方,路由器是在哪里创建的?用什么?我仍然有兴趣找到一些例子来说明如何做到这一点。@Dan Leighton您能为这个问题添加答案吗?即使urlparam也可以