Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 具有关系的Firebase安全规则_Ember.js_Firebase_Firebase Security - Fatal编程技术网

Ember.js 具有关系的Firebase安全规则

Ember.js 具有关系的Firebase安全规则,ember.js,firebase,firebase-security,Ember.js,Firebase,Firebase Security,我有三个Ember.js模型:用户、频道和跟踪。用户可以有多个频道,并且曲目属于某个频道。它们看起来像这样: //models/user.js 导出默认DS.Model.extend({ 频道:DS.hasMany('channel') }); //models/channel.js 导出默认DS.Model.extend({ 用户:DS.belongsTo('user') }); //models/track.js 导出默认DS.Model.extend({ 频道:DS.belongsTo(“

我有三个Ember.js模型:用户、频道和跟踪。用户可以有多个频道,并且曲目属于某个频道。它们看起来像这样:

//models/user.js
导出默认DS.Model.extend({
频道:DS.hasMany('channel')
});
//models/channel.js
导出默认DS.Model.extend({
用户:DS.belongsTo('user')
});
//models/track.js
导出默认DS.Model.extend({
频道:DS.belongsTo(“频道”)
});
现在,要创建一个通道,应该对您进行身份验证。要编辑/删除,我检查特定频道是否在已验证用户的“频道”属性中。像这样:

“.write:”(!data.exists()&&auth!==null)| |(root.child('users/'+auth.uid+'/channels').child($channelID).exists())”
这是正确的吗?似乎有效

要编写曲目,您应该经过身份验证,并且曲目的
频道
应该存在于
user/$userid/频道
列表中

.write:“root.child('users/'+auth.uid+'/channels').child().exists()”
我该怎么做呢?

你在这里写的安全规则可以很好地工作,这就是为什么你没有得到更多的信息。目前还不清楚您试图解决的实际问题是什么。首先确保通道存储为密钥,例如$userid/channels/$channelid/true,而不是数组值或安全规则无法帮助您读取的其他格式(即,它不会“包含”)。谢谢。让我再试一次:如果没有prev数据,或者如果曲目的channel属性的值等于已验证用户的channel属性中的值,我希望允许在曲目上写入。对于JS,它看起来是这样的:user.channels.contains(track.channel)我试过了,但我的语法在某个地方出错:“.write”:“!data.exists()| | root.child('users/'+auth.uid+'/channels').val().contains(data.child('channel').val())”没有contains命令,正如我在最后一条评论的末尾所指出的。好的,我一定是误解了这里记录的内容-所以在我的示例中/users/userid/channels是一个值数组。如何检查data.child('channel').val()是否在该数组中?我尝试了“data.child('channel').val()==root.child('users/'+auth.uid+'/channels').val(),但无效。感谢您的帮助。当您说
data.child('channel')
时,是指文字键“channel”还是特定频道的id?路径
auth.uid+'/channels'
可能包含指向某个值(例如true)的通道键列表,因此特定通道的值当然不等于通道列表。你为什么期望它们是平等的?仍然非常模糊您试图实现的目标、数据的外观以及您正在尝试的内容。请看这里的帮助。