我想使用简单的nvd3 discrete bar chart显示集合中的数据。
当我尝试使用本地收藏时,它工作得很好。 现在我将相同的数据转移到db集合,但我无法获取Meteor的.render中的数据。
Template.chartPopularWordsAll.onCreated(() => {
let template = Template.instance();
template.autorun(() => {
template.subscribe('dataViewed'); // DataViewed.find()
});
Template.chartPopularWordsAll.rendered = function() {
let data = DataViewed.find({}, {
limit: 5,
sort: {
timesViewed: -1
}
}).fetch();
console.log(data); // <-- this returns an empty array
}
问题:如何访问.rendered中的数据?
在Meteor文档中搜索'.rendered'没有结果我只能找到.onRendered。 。甚至是最新的还是被弃用了?
提前致谢!
莫夫
答案 0 :(得分:1)
我认为这里的问题是混淆自动运行订阅和提取:
当数据发生变化时会运行自动运行,因此它不是需要在自动运行中进行的预订,而是数据查找。
试试这个:
Template.chartPopularWordsAll.onCreated(() => {
let template = Template.instance();
template.subscribe('dataViewed'); // DataViewed.find()
});
Template.chartPopularWordsAll.rendered = function() {
template.autorun(() => {
let data = DataViewed.find({}, {
limit: 5,
sort: {
timesViewed: -1
}
}).fetch();
console.log(data); //
}
}
如果这不起作用,请尝试不取回对数据的调用,但是在需要数据时获取:Collection.find()为您提供了一个被动的游标,但是一旦你获取了一个数组,这不是被动的。 Collection.find()部分&#39;应该&#39;在自动运行中被反应,但我不是100%肯定。