如果只有data
存在时,如何将光标返回到{{#each data}}
引用的嵌入文档。
需要光标,以便可以在模板 var obj = ActiveTaskCol.find({action: selectedTask, data: {$exists:true}},{field: {data: 1}});
if (obj.count() > 0) {
console.log(obj.text);
中使用它。
<top (required)>': undefined method
当数据字段存在时,此Meteor代码会正确返回true,但var obj是父文档的游标,而不是数据嵌入文档。 我怎样才能解决这个问题?感谢
答案 0 :(得分:1)
我认为您不能使用简单的find
返回嵌入文档。基于你的previous question和这个问题,我建议你使用这样的东西(我自己从来没有在火焰上迭代游标),
Template.index.helpers({
taskInputs: function () {
var ready = Meteor.subscribe('inputsCol').ready();
var data = InputsCol.find({});
var selectedTask = Session.get('taskSelected');
var obj = ActiveTaskCol.find({
action: selectedTask,
data: { $exists: true }
}, {
field: {data: 1}
});
if (obj.count() > 0) {
return {items: obj, isActiveTaskCol: true };
} else {
return {items: data, ready: ready};
}
}
});
在你的模板html中,
<template name="index">
{{#if taskInputs.isActiveTaskCol}}
{{> listItem taskInputs.items.data}}
{{else}}
{{> listItem taskInputs.items}}
{{/if}}
</template>
<template name="listItem">
{{#each this}}
<div>Do whatever you want here like {{this.taskName}}</div>
{{/each}}
</template>
或强>
您可以直接在助手中使用fetch
来获取数组并使用下划线来获得所需的结果。
Template.index.helpers({
taskInputs: function () {
var ready = Meteor.subscribe('inputsCol').ready();
var data = InputsCol.find({}).fetch();
var selectedTask = Session.get('taskSelected');
var items = ActiveTaskCol.find({
action: selectedTask,
data: { $exists: true }
}, {
field: {data: 1}
}).fetch();
if (items.length > 0) {
items = _.pluck(item, 'data'); //this transforms [ { data: "item1" }, { data: "item2" } ] to [ "item1", "item2" ]
return {items: items };
} else {
return {items: data, ready: ready};
}
}
});
在你的模板html中,
<template name="index">
{{#each taskInputs.items}}
<div>Do whatever you want here like {{this.taskName}}</div>
{{/each}}
</template>
希望有所帮助