我有以下代码并且正在
{{#each}}目前只接受数组,游标或falsey值
HTML:
vt_1
使用Javascript:
<template name='subscribers'>
{{#each stat in getPythonStats "WNScan"}}
<div>
{{stat.name}}: {{stat.value}}
</div>
{{/each}}
</template>
控制台输出:
Template.subscribers.helpers({
getPythonStats(server) {
var status = WNstatus.find({'server': server});
if (!status)
status = [{'status': 'shutdown'}, {'count': 0}, {'startTime': 'Never'}, {'runTime': 0}];
console.log(status);
return status;
}
});
看起来像我的光标。我一开始认为问题在于{_id: M…D.ObjectID, server: "WNScan", status: "shutdown", startTime: "2017-10-10 22:40:12", runTime: 5.39, …}
混淆getPythonStats
的论点,但是自从调用帮助器以来,这似乎不是问题所在。我已经尝试了#each
和collection.find
(它们返回相同的结果,因为从不会有多个文档满足查询),结果相同。我在其他地方使用collection.findOne
几乎完全相同的代码,并且工作正常。此外,如果找不到{{with getPythonStats "WNScan"}}
文档,则返回的数组会产生相同的错误。这是最新的1.5版Meteor。
答案 0 :(得分:4)
据我了解,您希望迭代status
中的每个键,但 #each需要数组或光标而status
不是!
collection.find
返回一个游标,collection.findOne
返回一个文档(不是文档数组)。
使用collection.findOne
的{{1}}相当于collection.find
使用Javascript:
collection.find().fetch()[0]
HTML
const defaultStatus = {
status: 'shutdown',
count: 0,
startTime: 'Never',
runTime: 0
};
Template.subscribers.helpers({
getPythonStats(server) {
const status = WNstatus.findOne({ 'server': server});
console.log(status);
return _.pairs(status || defaultStatus);
}
});