我正在尝试创建对我的firebase数据库的引用并发送user.uid,但不写入数据库中的该路径。这可能吗?
var dbObj = firebase.database().ref().child(`match/${user.uid}/${randomID}`);
var milliseconds = (new Date).getTime();
return dbObj.update({
// Set the interested value in the db
[milliseconds]: 'text'
});
所以我使用user.uid来验证用户是否通过firebase数据库规则登录了有效。我将它与$ uid相匹配,这是有效的。
"match": {
"$uid": {
".write": "auth.uid == $uid",
".read": "auth.uid == $uid",
}
}
但我想写入../match/randomID/otherData
INSTEAD ../match/userID/randomID/otherData
的数据库位置
答案 0 :(得分:0)
是的,可以创建对Firebase数据库的引用并发送user.uid,而无需写入该路径。
例如,您有一个spaceships
路径,其中子键是太空船ID,值是shapeship对象(可能包含权重,成本,launch_date和creator_id
等键,这是该太空船的创作者的用户ID)
您的规则可能如下所示:
{
"rules": {
"spaceships": {
"$spaceship_id": {
// everyone can retrieve the data here
".read": true,
// only the creator can edit this spaceship
".write": "data.child('creator_id').val() === $auth.uid"
}
}
}
}
在这种情况下,无论谁登录都无法确定谁可以阅读宇宙飞船对象(因为任何人都可以)。 uid值仍用于确定谁可以写入该路径(基于creator_id
子键),但 包含在您正在检查的路径中{{1} }。