Безопасность Firestore на пути - PullRequest
       20

Безопасность Firestore на пути

0 голосов
/ 05 августа 2020

Используя правила безопасности Firestore, мне было интересно, есть ли способ напрямую просмотреть родительский документ, используя path? Например, для любого пути в подколлекции я хотел бы сделать следующее:

match /myRootCollection/{myRootDoc=**} {
        allow write: if request.path.split('/')[0] === "myRootDoc1":
}

Я понимаю, что могу также иметь ссылку на myRootDoc1 в документах подколлекции следующим образом:

{
        myRootCollection: {
                {myRootDoc1}: {
                        mySubCollection: {
                                {mySubCollectionDoc1}: {
                                        name: "someUser0",
                                        parent: "myRootDoc1",
                                },
                                {mySubCollectionDoc2}: {
                                        name: "someUser1",
                                        parent: "myRootDoc1",
                                },
                                {mySubCollectionDoc3}: {
                                        name: "someUser2",
                                        parent: "myRootDoc1",
                                },

                        }
                {myRootDoc2}: {
                        mySubCollection: {
                                {mySubCollectionDoc1}: {
                                        name: "someUser3",
                                        parent: "myRootDoc2",
                                },
                                {mySubCollectionDoc2}: {
                                        name: "someUser4",
                                        parent: "myRootDoc2",
                                },
                                {mySubCollectionDoc3}: {
                                        name: "someUser5",
                                        parent: "myRootDoc2",
                                },

                        }
                }
                
                
                
        }
}

Здесь я смогу прочитать mySubCollectionDocs, если они находятся под определенным c родителем. Вышеупомянутое работает, потому что у меня есть поле непосредственно в каждом do c, но можно ли просто прочитать mySubCollectionDoc и получить его родительский элемент, используя путь из Firestore Security без указанного поля?

Если я в состоянии, как я могу запросить, используя node.js (поскольку Firebase защищает от любых потенциальных утечек запросов)?

Заранее спасибо.

1 Ответ

1 голос
/ 05 августа 2020

Попробуйте следующее:

match /myRootCollection/{myRootDoc}/mySubCollection/{id} {
   allow write: if myRootDoc == "xxx";
}
...