javascript - Meteor:如何将用户集合中的用户名添加到我创建的新集合中?
问题描述
快速提问。如何向集合中添加新字段?例如,我有一个名为 Teams 的集合,我想向其中添加成员字段。现在 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: Cannot read property 'value' of undefined at Object.submit .new-team”</p>
关于如何去做这件事的任何想法?非常感谢您的帮助。谢谢!
解决方案
我不熟悉meteor-blaze,所以我不会在前端提供任何有用的代码,但总体思路是:
1) 获取 Teams 集合(获取用户的方式相同)
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 集合之前,您需要在服务器端提供发布并在客户端订阅它。文档对于理解这种机制非常有帮助
推荐阅读
- google-cloud-platform - 如何在 google Pub/Sub 中快速发布多条消息?
- javascript - 如何通过 url 从网站获取所有网站图标
- arrays - Swift + macOS + Xcode:从 ContentView 访问在类中创建的键值对数组
- if-statement - 如何将 MASM 汇编语言中的条件语句用于年龄计算程序?
- azure - 将使用详细信息数据从 PowerShell 变量导出到 .csv 文件会被截断
- python - 如何将两个列表作为元素放入列表中?
- java - JavaFX 布局中的银色空格
- java - 在 txt 文件中的特定位置附加一个字符串 - Java
- mongodb - 如何对集合进行分组以汇总对象的属性并使用 MongoDB 生成计算字段
- r - 如何根据 R 中 ggplot2 表示的其他因素的水平(嵌套排序)对因素的水平进行排序