我在返回和显示要添加到子文档的标签时遇到了一些麻烦。我添加标签没有问题,但想在每个标签的项目上放置一个标签。我根本找不到可以帮助我返回子文档中数组中的项目的资源。我认为这是我卡住的所有帮手 - 基本上是语法正确的方式来编写“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;
}
});
数据库模式(如我的插入命令所示):
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);