我需要执行一个包含事件数组的数据库请求,其中每个事件都具有报告者的ID。因此,在返回事件数组之前,我需要将相应的用户映射到相应的事件。查询应如下所示: 1.查询集合('/事件) 2.最终返回该事件,但在返回之前 ->浏览该事件数组中的每个条目,并查询该事件的适当报告者。将那个记者指派给该事件,然后返回整个数组。
所以我搜索的结果看起来像这样: -发生火灾的事件具有以下属性:
Incident: {
id: string;
likes: number;
reportedBy: string;
}
Incident: {
id: string;
likes: number;
reportedBy: User;
}
有人对我有答案吗?几天以来我一直在寻找解决方案...
答案 0 :(得分:0)
我对另一个问题here发表了类似的答案:
在我看来,没有什么理由在客户端进行通话。 Firestore的速度非常快,但在可能的情况下也可以拨打更少的电话。我在Firestore中采用的技术是将我认为需要的数据与要提取的数据一起存储。
因此,如果我要提取incidents
,并且知道需要user
,他们的username
和他们的profile picture
,那么我将在其中存储用户字段每个具有用户ID,用户名和个人资料图片的问题文档。
类似的东西:
Incidents:
---> Incident
---> Date
---> ReportedBy:
-------> ID
-------> Profile Picture
-------> Username
更新:
您需要做出决定的事情是有多少用户数据可以保持最新状态,以及哪些数据位需要保持更新。对于需要保持更新的任何内容(例如可能影响路由的用户名),您可以侦听核心用户集合的更改:
exports.updateUser = functions.firestore
.document('user/{userId}')
.onUpdate((change, context) => {
const newValue = change.after.data();
const previousValue = change.before.data();
const newName = newValue.name;
const oldName = previousValue.name;
if (newName !== oldName){
//update all incidents where userId matches.
}
// perform other desired operations ...
});
有关云功能的更多信息,请参见文档的此部分:https://firebase.google.com/docs/functions/firestore-events#trigger_a_function_when_a_document_is_updated
答案 1 :(得分:0)