使用firebase数据库规则防止负值
我正在尝试使用firebase数据库规则来防止出现负值使用firebase数据库规则防止负值,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我正在尝试使用firebase数据库规则来防止出现负值 { "rules": { "products": { ".read": true, ".write": "auth != null", ".indexOn": ["subgroup", "group", "visibility"], ".validate": "newData.child('quantity').val() >= 0" } } 但是,使用
{
"rules": {
"products": {
".read": true,
".write": "auth != null",
".indexOn": ["subgroup", "group", "visibility"],
".validate": "newData.child('quantity').val() >= 0"
}
}
但是,使用模拟器测试规则时,我总是看到验证规则上的写入被拒绝:
".validate": "newData.child('quantity').val() >= 0"
我正在使用:
location: /products/-KQ1qLkeI3gefuGSFIL_
及
我使用的是经过身份验证的用户
知道这是怎么回事吗
谢谢
====
更新:
将规则更改为以下内容没有帮助:
"products": {
"$product": {
".read": true,
".write": "auth != null",
".validate": "newData.child('quantity').val() >= 0",
".indexOn": ["subgroup", "group", "visibility"]
}
},
此外,DB设计:
DBRoot
products
-KQ1nPkLeqiTMzEzhrfW
description:"Limited Edition"
quantity: 5
...
您的验证规则在
/products
上,但您正在写入/products/[autoid]
。尝试这样修改规则:
{
"rules": {
"products": {
"$pid": {
".read": true,
".write": "auth != null",
".indexOn": ["subgroup", "group", "visibility"],
".validate": "newData.child('quantity').val() >= 0"
}
}
}
}
你能试着直接向products而不是/products/-KQ1qLkeI3gefuGSFIL_uu写吗?嗯,这很奇怪。我用截图编辑了我的答案,显示它对我有用。你所做的一定有点不同。我能看看你的数据库设计吗@“我不知道你的意思,”阿桑。你说你使用模拟器来测试规则,我模拟了你正在做的事情,然后修改了它,这样模拟就会通过。我并没有在真实的数据库上运行它,只是模拟规则。它们起作用了。啊哈,我明白了。我测试的json数据在quantity的数值周围有引号,并且假设它是一个字符串!谢谢你的帮助@dburgesah-ha,那就够了!没问题,很高兴你明白了!
{
"rules": {
"products": {
"$pid": {
".read": true,
".write": "auth != null",
".indexOn": ["subgroup", "group", "visibility"],
".validate": "newData.child('quantity').val() >= 0"
}
}
}
}