Какой самый эффективный способ хранения данных для нескольких ссылок в firebase? - PullRequest
0 голосов
/ 10 марта 2019

Давайте посмотрим на следующую ситуацию:

Если мы создаем пользователя, нам нужно создать нового клиента, нового пользователя и новый начальный проект для пользователя.

db = {
  users: {},
  clients: {},
  projects: {}
};

const usersRef = firebase.database().ref("/users");
const clientsRef = firebase.database().ref("/clients");
const projectsRef = firebase.database().ref("/projects");

Чтобы сохранить код чистым и разделенным, мы можем создать три функции:

const newUserToDb = name => {
  const newUser = usersRef.push();
  newUser.set({name});
};

const newClientToDb = name => {
  const newClient = clientsRef.push();
  newClient.set({name});
};

const newProjectToDb = name => {
  const newProject = projectsRef.push();
  newProject.set({name});
};

const createUserToDb = (userName, clientName, projectName) => {
  newUserToDb(userName);
  newClientToDb(clientName);
  newProjectToDb(projectName);
};

Чтобы сделать все изменения в одном месте, но сделать код менее разделенным:

const createUserToDb = (userName, clientName, projectName) => {
  const userId = usersRef.push().key;
  const clientId = clientsRef.push().key;
  const projectId = projectsRef.push().key;

  const updates = {};

  updates[`/users/${userId}`] = userName;
  updates[`/clients/${clientId}`] = clientName;
  updates[`/projects/${projectId}`] = projectName;

  firebase.database().ref().update(updates);
};

Есть ли какое-то важное различие между двумя решениями выше? Что является более эффективным?

Ответы [ 2 ]

2 голосов
/ 10 марта 2019

Важным отличием от вышеуказанного подхода является атомарность.В первом сценарии обновление отдельной коллекции или документов будет успешным или не удастся, не затрагивая другие обновления.Во втором сценарии все обновления будут успешными, иначе ни один не будет.

Я не думаю, что эффективность - это правильный термин, который следует использовать для сравнения вышеуказанных сценариев, это скорее бизнес-сценарий, который определит, какой из них вам нужно использовать

1 голос
/ 10 марта 2019

Первый способ кажется более разрозненным и явным, что другим разработчикам, вероятно, будет легче его понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...