gpt4 book ai didi

javascript - 查询和改变Firebase实时数据库多对多(双向)关系

转载 作者:行者123 更新时间:2023-12-02 22:30:20 29 4
gpt4 key购买 nike

我已经仔细阅读了文档 https://firebase.google.com/docs/database/web/read-and-write以及网上很多例子。但这里有一个脱节:在将对象添加到数据库时,它们似乎都没有考虑从 firebase 随机生成的 id。

根据我的研究,扁平化数据是正确的选择。所以我已经构建了我的数据:

enter image description here

但是当添加玩家时,例如:

  • 我如何不仅将他添加到玩家对象中,而且还添加到team_memberships 对象?
  • 然后,团队对象如何知道如何引用玩家以及在哪里这样做?

这是我的客户端代码(JavaScript(Vue + Typescript)):

addPlayer({ state }, payload) {
const user = firebase.auth().currentUser;
if (user) {
firebase
.database()
.ref('users').child(user.uid).child('players')
.push({
firstName: payload.firstName,
lastName: payload.lastName,
jerseyNumber: payload.jerseyNumber,
teamName: payload.teamName
});
}
},

最佳答案

您必须使用update()允许“一次将多个值写入数据库”的方法(另请参阅 here ):

这里是关于如何处理第一种情况的示例(“我如何不仅将他添加到players对象,而且还添加到team_memberships对象”)。

var userObj = {
firstName: payload.firstName,
lastName: payload.lastName,
jerseyNumber: payload.jerseyNumber,
teamName: payload.teamName
};

var team_id = '....' //I don't know how you plan to get this value.

var newPlayerKey = firebase.database().ref('users').child(user.uid).child('players').push().key;

var updates = {};
updates['/users/' + user.uid + '/players/' + newPlayerKey] = userObj;
updates['/users/' + user.uid + '/team_memberships/' + team_id + '/' + newPlayerKey] = true;

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

注意:我不知道您打算如何获取 team_id 的值,但很可能是从前端获取,因为您有 teamName

关于javascript - 查询和改变Firebase实时数据库多对多(双向)关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58925653/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com