У меня есть 2 основных узла в моей базе: Пользователи и Проекты.NoSQL & Firebase: Хранение и Итерация по отношениям «многие ко многим»
Каждый пользователь может быть назначен нескольким проектам в разных ролях.
После прочтения о том, как структурировать отношения многие ко многим, я в конечном итоге, что он должен выглядеть следующим образом:
users : {
user1 : {
name : blah,
email : [email protected],
projects : {
projects1key : true,
projects2key : true
}
}
}
projects : {
project1key : {
name : blahserve,
category : blahbers,
providers : {
user1 : true,
user7 : true
}
}
}
То, что я не мог понять, как я могу присвоить каждому пользователю определенную роль в каждом проект.
Что новая структура базы данных должна выглядеть, если мне нужно добавить
role
(строку) для каждого пользователя в рамках проекта?Исправьте меня, если я ошибаюсь: когда я назначаю пользователя проекту, мне нужно создать 2 новых узла: узел projectkey в моем пользовательском узле и узел пользовательского ключа в моем проекте. Это правильно?
Update
Поскольку данный ответ здесь является правильным, но не уверен, что он будет соответствовать моему случаю использования, это мой случай использования:
- (1) Итерация по списку всех пользователей проекта
- (2) Итерация над списком всех членов проекта
- (3) Проверьте роль проекта, когда пользователь обращается к проекту t и дать ему разрешение зависит от его роли
- (4) Страница «Проект -> пользователи» позволяет добавить нового пользователя в существующий проект. роль пользователя выбирается в той же форме вместе с пользователем. пользователь должен иметь роль в проекте.
Спасибо, что это правильно! Можете ли вы привести пример того, как должна выглядеть итерация над этой структурой? Пример: https://www.firebase.com/docs/web/guide/structuring-data.html#section-join – TheUnreal
Пожалуйста, избегайте распространять запросы в комментариях. Могу ли я предположить, что вы сначала попытаетесь сами, а если получите столкновение, отправьте сообщение другой вопрос о SO. Конечно, sum1 поможет вам ...Кроме того, вы следуете за дефрагментированными файлами firebase, используя их: -https: //firebase.google.com/docs/ :) Happy Coding – Dravidian
Несомненно, спасибо. Только один вопрос касается вашего ответа: почему вы решили использовать user1/projectkey1, а не projectkey1/user1 ..? (Пользователи в проектах по проектам inder users) – TheUnreal