Meteor:如何将Username中的Username添加到我创建的新集合中?

问题描述 投票:1回答:1

快问。如何向集合中添加新字段?例如,我有一个名为Teams的集合,我想向其添加一个Members字段。现在,团队只接受文本(我创建的团队并添加到集合中)和一个createdAt日期。我的目标是能够通过我的Users集合找到用户并将其作为成员添加到Team集合中。

我甚至不确定从哪里开始。我正在使用帐户密码包,顺便说一句。现在这就是我所拥有的:

Template.teams.events({
   'submit .new-team'(event) {
      event.preventDefault()
      const target = event.target
      const text = target.text.value
      const members = target.members.value 
      newTeam.insert({
         text,
         createdAt: new Date(),
         members
      })
      (target.text.value = '')
   }
})

但我一直在我的控制台上收到此错误:“TypeError:无法读取Object.submit .new-team中undefined的属性'value'”

关于如何做到这一点的任何想法?真的很感激帮助。谢谢!

javascript mongodb meteor meteor-blaze
1个回答
1
投票

我不熟悉流星火焰,所以我不会在前端提供任何有用的代码,但一般的想法是:

1)获取团队集合(同样可以获得用户)

2)找到你感兴趣的团队使用它的id并添加新的对象属性成员(如果不存在)

3)使用新的memberId更新团队

我不确定你的数据库结构是什么,但让我们说它看起来类似于:

{
  _id: teamId,
  name: teamName,
  createdAt: creationDate
}

快速预览:

updateTeam(teamId, userId) => {
  const teams = Teams.find().fetch();
  let chosenTeam = teams ? teams.find(team => team._id === teamId) : {};

  if (chosenTeam && chosenTeam._id) {
     let members = chosenTeam['members'] || [];
     members.push(userId);

     Teams.update({_id: teamId}, {$set: {members}});
  }
}

希望能帮助到你

编辑:当然,在获取Teams集合之前,您需要在服务器端提供发布并在客户端上订阅它。 Docs are really helpful in understanding this mechanism

© www.soinside.com 2019 - 2024. All rights reserved.