Angular/Firestore-基于特定值创建大量文档

Angular/Firestore-基于特定值创建大量文档,angular,google-cloud-firestore,angularfire2,Angular,Google Cloud Firestore,Angularfire2,我有一个输入,用户可以定义“游戏计数”和“玩家名称” 如果用户为游戏计数输入“10”,是否可能在添加新用户时,创建一个称为“游戏分数”的子集合,其中为10个分数中的每一个添加10个文档 在firestore中,结构最终将是: 玩家(此处添加玩家姓名)>游戏分数>10个文档(每个文档的值为“游戏分数:0”) 或者,在玩家集合中为10分创建一个数组节点是否更容易/更有效 以下函数将用户罚款添加到用户集合中。我只是不确定如何创建包含一定数量文档的子集合 addUser(userName){ con

我有一个输入,用户可以定义“游戏计数”和“玩家名称”

如果用户为游戏计数输入“10”,是否可能在添加新用户时,创建一个称为“游戏分数”的子集合,其中为10个分数中的每一个添加10个文档

在firestore中,结构最终将是:

玩家(此处添加玩家姓名)>游戏分数>10个文档(每个文档的值为“游戏分数:0”)

或者,在玩家集合中为10分创建一个数组节点是否更容易/更有效

以下函数将用户罚款添加到用户集合中。我只是不确定如何创建包含一定数量文档的子集合

addUser(userName){
  const newUser: any = {
    userName: userName,
  };

  this.usersCollection.add(newUser).then((docRef) => {
    const gameID = docRef.id;
  });
}

是的,你可以这样做。假设您拥有此对象:

const games = [
 {
  game_score: 0,
  ..
  ..
 },
 {
  game_score: 0,
  ..
  ..
 },
 {
  game_score: 0,
  ..
  ..
 },
]
我添加了更多字段,因为您可能希望在某个时间(时间戳或任何其他有关游戏的信息)添加这些字段。

因此,您可以迭代此数组并:

games.forEach(game => {
 this.usersCollection.doc(`${userID}`).collection<any>('games').add(game);
})
games.forEach(游戏=>{
this.userscolection.doc(`${userID}`).collection('games').add(games);
})
就这么简单,您可以创建新的嵌套集合。

对于您的问题,如果在新的收藏或对象中这样做更好:
我认为最好在一个新的集合中这样做,因为将来您可能希望添加身份验证和安全规则,并阻止其他玩家访问每个用户的唯一字段,因此,通过这种方式,您可以将游戏限制为公共数据,并阻止其他用户访问用户的私有数据


编辑:

如果你没有像你在评论中所说的那样有一个对象,那么你就有了游戏的价值,你可以在代码中这样做:

setGameCount = (gameCount) => {
 const gCount = +gameCount; // <-- since you pass the value from the input, we convert it to number from string.
 const userID = 'yourUserID'; // <-- which user you are initialize
 for(let i=0 ; i< gCount; i++){
    const game = {
     game_score: 0,
    }
    this.usersCollection.doc(`${userID}`).collection<any>('games').add(game);
 }
}
setGameCount=(gameCount)=>{

const gCount=+gameCount;//谢谢Dax!-快速提问,如果我有以下HTML,如何将输入数值连接到“Games”对象中的项目数量?设置你应该在setGameCount(gameCount.value)中传递的游戏计数谢谢。是的,我很自然地通过了,但是我不确定如何用这个数字构建一个对象。@ETX,无论如何它与这个主题无关,如果我的答案帮助你标记为已回答,如果你有任何其他问题或者你在任何事情上需要帮助,请用这些问题打开新主题,因为它与当前无关耳鼻喉科问题。干杯,祝你好运!好的,谢谢你的时间。我会将此标记为正确,但是我无法测试它是否有效,因为我不确定如何通过你建议答案的第一部分。