редактирование: Решение можно найти в комментарияхMongoDB: Как обновить подпол документа (Метеор)
Осторожно:. Noob вопрос приходит в
У меня есть коллекция Монго под названием «Компании». Вот пример запись:
{
name: 'Company 1',
createdAt: new Date(),
tags: [
{tag: 'tag 1', count: 63},
{tag: 'tag 2', count: 47},
{tag: 'tag 3', count: 13}
]
}
Как можно видеть на примере, теги компании сохраняются в массиве объектов, где каждый тег имеет счета свойство, которое помнит, как часто нажал тег.
Теперь я хотел бы увеличить счетчик, когда пользователь нажимает на тег. Я делаю это внутри функции обработчика событий. Как я пытался достичь этого, было следующее:
Шаг 1: Мне нужно найти соответствующий документ компании. Тег является «элементом href» внутри элемента списка внутри контейнера-div. Внутри этого DIV, я могу найти название компании, поэтому я использую это имя, чтобы получить соответствующий документ:
var companyName = event.target.parentElement.parentElement.children[1].textContent;
var company = Companies.findOne({name: companyName});
Это работает до сих пор, но я полагаю, что есть чистое решение. Мне особенно не нравятся дети [1]. Любые рекомендации?
Шаг 2: Теперь, когда у меня есть компания, я хотел бы увеличить метку, которая была нажата. И это отвратительно, потому что мне нужно выбрать правильный элемент массива для обновления. У меня есть текст тега, который я хочу обновить (из event.target.text), но как выбрать правильный объект из массива tags? Я думаю, что это имеет какое-то отношение к оператору positional $, но я этого еще не понимаю.
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>
Также укажите код html – mwarren
. добавлен html. – Pueggel
Посмотрите на [tags packages] (https://atmospherejs.com/?q=tags), в основном 'patrickleet: tags' и используя теги с' autoform'. В противном случае вы на правильном пути [встраиваете теги] (https://stackoverflow.com/questions/8455685/how-to-implement-post-tags-in-mongo). –