Meteor 在Iron中使用.findOne()的正确方法:router
为什么.findOne()在路由器内执行时不工作? 它总是返回未定义的 但是.find()的工作没有任何问题。还通过手动输入条件和.\u id测试了.findOne()Meteor 在Iron中使用.findOne()的正确方法:router,meteor,iron-router,Meteor,Iron Router,为什么.findOne()在路由器内执行时不工作? 它总是返回未定义的 但是.find()的工作没有任何问题。还通过手动输入条件和.\u id测试了.findOne() .findOne()不是为在路由器内工作而设计的吗?它在我的应用程序中工作正常。我是这样实现的: Router.map(function() { this.route('training', { path: '/training/:id', data: function() {
.findOne()不是为在路由器内工作而设计的吗?它在我的应用程序中工作正常。我是这样实现的:
Router.map(function() {
this.route('training', {
path: '/training/:id',
data: function() {
return Trainings.findOne({id: this.params.id});
},
notFoundTemplate: 'notFound',
title: "Training"
});
});
很好用!
也许你想把结果传给迭代器?它不是光标。
尝试find().fetch()并以相同的方式使用结果
如果是数据/计时问题,您还可以使用ready()函数进行保护。
如果你是反应性地使用它,你不需要这样做,但这会让你在事情发生时有一点更明确的知识,而不需要使用waitOn
在咖啡脚本中:
#---------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
我看不出有什么理由不应该。你能展示一些代码吗?这可能与旧的“数据尚未到达”问题有关。我知道这是可行的,但如果我想看到路由器本身的数据库结果呢?如果我试图在action:function(){}内查看findOne的结果,出于某种原因,它将返回undefined。但是如果我找到了。find()并尝试查看该数据,它就会工作。为什么呢?