如何为允许的属性设置规则?我只希望能够为用户设置创建的和最后更新的属性。我尝试使用变量来捕获未指定的值,但这会产生permission_denied错误。我假设因为它正在解析创建或lastUpdated作为其值。
"u": {
".read": true,
"$uid": {
".write": "$uid === auth.uid",
".validate": "newData.hasChildren(['created','lastUpdated'])",
"$other": {
".validate": false
},
"created": {
".validate": "newData.isNumber()"
},
"lastUpdated": {
".validate": "newData.isNumber()"
}
},
},
失败的写入操作:
var userObj = {
uid: user['uid'],
created: new Date().getTime(),
lastUpdated: new Date().getTime()
}
database.ref('u/' + user['uid']).set(userObj);
答案 0 :(得分:0)
您要向节点添加三个属性:uid
,created
和lastUpdated
。您的安全规则仅允许created
和lastUpdated
。
鉴于uid
已被用作密钥,写入应该是:
var userObj = {
created: new Date().getTime(),
lastUpdated: new Date().getTime()
}
database.ref('u/' + user['uid']).set(userObj);
我还会考虑用户ServerValue.TIMESTAMP的时间,这可以确保服务器确定时间戳,并且两个值都是相同的。