快速提问。如何将新字段添加到集合中?例如,我有一个名为Teams的集合,我想向其添加一个Members字段。目前,Teams仅接受文本(我创建并添加到集合中的团队)和createdAt日期。我的目标是能够通过“我的用户”集合找到一个用户,并将其添加为“团队”集合的成员。
我什至不知道从哪里开始。我正在使用帐号密码包,顺便说一句。现在这就是我所拥有的:
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中未定义的属性'value'”
关于如何执行此操作的任何想法?非常感谢您的帮助。谢谢!
答案 0 :(得分: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