让我们看看接下来的情况:
如果我们创建一个用户,我们必须为该用户创建一个新客户端、一个新用户和一个新的初始项目。
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);
};
上述两种解决方案之间有什么重要区别吗?哪个更有效率?
与上述方法的重要区别是原子性。在第一种情况下,单个集合或文档更新将成功或失败,而不会影响其他更新。在第二种情况下,所有更新都会成功,否则不会成功。
我不认为效率是用于比较上述场景的正确术语,它更多的是业务/用例,它将定义您需要使用哪个
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句