我有一个以下数据结构作为firestore文档 我想为每个参与者设置安全规则。
{
event_name: 'XXX',
created_by: 'userid'
participants: {
userid_a: true,
userid_b: true,
userid_c: true,
}
}
参与者被设置为类似数组的数据,以使用参与者的用户ID查询集合。 我正在以下列方式更新数据
const eventDoc = this.afs.doc('event/' + event_id );
participant_obj = {}
participant_obj[`participant_obj.${user_id}`] = true;
eventDoc.update(participant_obj)
然后,我想设置安全规则 只有授权用户才能更新自己的参与者状态。
match /event/{eventId} {
match /participant_obj {
allow write: if request.resource.data.keys()[0] == request.auth.uid
}
}
但它不起作用,因为participant_obj
不是文档的路径,也不是收集路径,participant_obj
只是文档中的数据。
如何设置安全性以更新文档中的特定字段?
答案 0 :(得分:3)
这样怎么样;
match /event/{eventId} {
allow write: if request.resource.data.participant_obj.keys()[0] == request.auth.uid
&& request.resource.data.participant_obj.size() == 1
}