我指的是https://firebase.google.com/docs/database/admin/start
我有如下所述的node.js代码:
var admin = require("firebase-admin");
var serviceAccount = require('mySdkJSONFile');
admin.initializeApp({
credential: admin.credential.cert({
projectId: "myProjectId",
clientEmail: "myClientEmail",
apiKey: "myApiKey",
privateKey: "myPrivateKey"
}),
databaseURL: "....",
databaseAuthVariableOverride: {
uid: "my-service-worker"
}
});
var db = admin.database();
var usersDB = db.ref("/users");
usersDB.set({
name: "myName",
date: "yesterday"
});
在数据库中,规则设置为
{
"rules": {
"public": {
".read": false,
".write": false
},
"users": {
"$uid": {
".read": "auth.uid == 'my-service-worker'",
".write": "auth.uid == 'my-service-worker'"
}
}
}
}
如果是" / user"我将读取和写入权限设置为true,一切正常,没有配置问题。
答案 0 :(得分:0)
您可能在使用my-service-worker
帐户时遇到问题。请查看Firebase console中的Authentication
标签,并检查该用户在User UID
列中的内容。确保使用相同的名称。除此之外,一切都应该没问题。
通常,uid
是一个复杂的自动生成字符串。我不确定如何创建自定义字符串,例如您输入的字符串。
答案 1 :(得分:0)
需要更改用户规则," $ uid"不需要。正如我在问题中提到的相同链接中所提到的(我自己发现很愚蠢)https://firebase.google.com/docs/database/admin/start
{
"rules": {
"public": {
".read": false,
".write": false
},
"users": {
".read": "auth.uid === 'my-service-worker'",
".write": "auth.uid === 'my-service-worker'"
}
}
}