【发布时间】:2015-04-12 12:25:03
【问题描述】:
我有一个名为“Companies”的 Mongo 集合。这是一个示例条目:
{
name: 'Company 1',
createdAt: new Date(),
tags: [
{tag: 'tag 1', count: 63},
{tag: 'tag 2', count: 47},
{tag: 'tag 3', count: 13}
]
}
公司的标签保存在一个对象数组中,其中每个标签都有一个计数属性,该属性会记住标签被点击的频率。当用户点击标签时,我想增加计数。我在事件处理函数中执行此操作。我试图实现这一目标的方式:
第 1 步:找到相关的公司文件。该标记是容器 div 内列表元素内的“a href 元素”。在那个 div 里面我可以找到公司的名字,所以我用那个名字来获取相关的文件:
var companyName = event.target.parentElement.parentElement.children[1].textContent;
var company = Companies.findOne({name: companyName});
这可行,但我想有一个更清洁的解决方案;我不喜欢 children[1] 部分。有什么建议吗?
第 2 步:现在我有了公司,我想增加被点击的标签。这很讨厌,因为我需要选择要更新的数组的正确元素。我有标签的文本(来自event.target.text),但是如何从标签数组中选择正确的对象?我认为这与位置 $ 运算符有关,但我不明白。
Companies.update({_id: company._id, }, /* MAGIC HAPPENS HERE */);
这是 HTML:
<head>
<title>App</title>
</head>
<body>
<div class="container">
{{> company}}
</div>
</body>
<template name="company">
<h2>{{name}}</h2>
{{#each tags}}
{{> tag}}
{{/each}}
</template>
<template name="tag">
<li><a href="">{{tag}}</a> - {{count}}</li>
</template>
【问题讨论】:
-
看看tags packages,主要是
patrickleet:tags,并使用带有autoform的标签。否则,你就在正确的轨道上embedding tags。 -
没有干净的解决方案。检查这个:code4foodblog.wordpress.com/2015/02/11/…
标签: mongodb meteor data-modeling