我有一套安全规则,在.write
中,我有多个规则,当我单独尝试时,它们工作正常,但当它们在一起时,一个工作,而另一个工作失败。 / p>
我有一个如下所示的安全规则:
"user_feeds": {
"$userId": {
".indexOn": ["timestamp"],
".read": "auth != null",
"$postId" : {
".write": "auth != null && (root.child('social').child('user_band_follows').child($userId).hasChild(newData.child('band_id').val()) || root.child('social').child('user_band_follows').child($userId).hasChild(data.child('band_id').val()))"
}
}
}
在我的$postId
子树中,我正在尝试检查父节点是否有一个节点,该节点与正在插入的数据的band_id
值相对应。
数据如下:
{
post_id: 1,
band_id: '-L-tyesfsdf13434',
timestamp: 34234234234
}
这些规则对应的实际树看起来像:
{
"user_feeds": {
"userId1": {
"-L-tyesfsdf13434": true
}
}
}
如果您将.write
规则分开:
(root.child('social').child('user_band_follows').child($userId).hasChild(newData.child('band_id').val()) ||
root.child('social').child('user_band_follows').child($userId).hasChild(data.child('band_id').val())
^无论什么
,每次都有效 root.child('social').child('user_band_follows').child($userId).hasChild(data.child('band_id').val())
^这个失败了,除非它本身。
Firebase的含义是什么,这样的规则组合会导致成功/失败不一致?你会认为如果两者都能独立工作,它们也应该一起工作吗?
我能做些什么来确保它们都能正常工作并允许写入吗?