让我们看看接下来的情况:
如果我们创建一个用户,我们必须为该用户创建一个新客户端、一个新用户以及一个新的初始项目。
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);
};
上述两种解决方案之间有什么重要区别吗?哪个效率更高?
最佳答案
与上述方法的重要区别在于原子性。在第一种情况下,单个集合或文档更新将成功或失败,而不影响其他更新。在第二种情况下,所有更新都会成功,否则不会成功。
我认为效率不是用于比较上述场景的正确术语,它更多的是业务/用例,它将定义您需要使用哪一个
关于javascript - 在 firebase 中将数据存储到多个引用的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55087773/