为什么.findOne()在路由器内部执行时不起作用? 它总是返回undefined。
然而.find()没有任何问题。还通过手动输入条件和._id手动测试.findOne()。
.findOne()不是设计用于在路由器内工作吗?
答案 0 :(得分:1)
它在我的应用程序中正常工作。我这样实现了它:
Router.map(function() {
this.route('training', {
path: '/training/:id',
data: function() {
return Trainings.findOne({id: this.params.id});
},
notFoundTemplate: 'notFound',
title: "Training"
});
});
答案 1 :(得分:0)
它工作正常! 也许你正试图将结果传递给迭代器?它不是游标。 尝试使用find()。fetch()并以相同的方式使用结果。
如果它是数据/时间问题,您也可以使用ready()函数进行保护。 如果你反应性地使用它,你就不需要了,但这会让你在事情发生时更明确地知道,但不使用waitOn。
在coffeescript中:
#---------routes ---------
@route 'routeName',
path: '/path/to/:cname'
onBeforeAction: ->
Meteor.subscribe('Things', {
cname: @params.cname
})
this.next()
data: ->
if @ready()
data = {
params: @params
}
data.lesson = Things.findOne({cname: @params.cname})
return data