我有一个具有这种结构的Firestore数据库。
-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.
,并显示相同的信息。
在执行任何操作之前,用户始终处于登录状态。 Stack是Firestore,Firebase托管,节点和云功能,jQuery。
我想知道我是否很愚蠢,但是我真的不知道如何开始进行这项工作-在各种搜索方式上做到空白,所以我非常感谢一些帮助!
答案 0 :(得分:2)
您可以通过以下方式解决此问题-
当用户单击链接mysite.com/work.html?work=documentID
时,创建一个将处理给定请求的路由器。由于用户已经登录,因此您可以从请求中收集uid和documentId。在Firestore中,您可以使用col/doc/subcollection
第二个创建函数来处理路由,该路由将从Firestore中检索数据,就像这样-
document_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
}
此功能会将数据返回到需要显示详细信息的页面。
最后,您将需要使用安全规则保护Firestore数据免受未经授权的请求,以仅允许文档所有者读取/写入数据-
firestore规则
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
}
}
您可以在此处阅读更多内容。
希望这会有所帮助!