サブドキュメントに追加するタグを返したり表示したりするのに少し問題があります。タグ付けは問題ないのですが、タグごとに商品にラベルを付けたいです。サブドキュメント内の配列内のアイテムを返すのに役立つリソースが見つかりません。私が立ち往生しているのはすべてのヘルパーだと思います-基本的に「Items.(this._id).itemTags.find();」を書く構文的に正しい方法です。:)
ああ、HTML と JS の多くを削除しましたが、その他はすべて正常に動作しています。コレクションは "Items" で、サブドキュメントは "itemTags" で、挿入時に "itemTags: []" で設定されます。私のテスト環境では、"Cats" と "Dogs" をタグとして追加し、"Items.find().fetch();" を介してオブジェクトを調べることで動作を確認できます。しかし、それらを表示するのに苦労しています。
HTML:
<template name="item">
{{#each itemTags}}
<span class="label label-default">{{itemTag}}</span>
{{/each}}
</template>
JS:
Template.item.helpers({
itemTags: function() {
var currentUserId = Meteor.userId();
return Items.find(); // yes, this line is completely wrong, but I'm lost hehe
}
});
Template.item.events({
'submit .add-tag': function(event) {
event.preventDefault();
var itemTag = event.target.text.value;
Items.update(this._id, {$push: {itemTags: itemTag}});
event.target.text.value = "";
return false;
}
});
データベース スキーマ (insert コマンドで表示):
var item = {
itemText: $(e.target).find('[name=itemText]').val(),
createdAt: new Date(),
createdBy: currentUserId,
hard: false,
difficulty: 'easy',
checked: false,
itemTags: [],
};
item._id = Items.insert(item);