说我有一个需要返回文章标题的助手。
<template name="articleList">
<span>{{title}}</span>
</template>
Template.articleList.title = function () {
return Articles.findOne({author: "Billy Bob"}).title
}
我经常会看到未读取的未定义的属性标题&#39;错误。所以当我尝试像这样调试它时
Template.articleList.title = function () {
console.log(Articles.findOne({author: "Billy Bob"}))
}
日志会说
undefined
undefined
Object[0]
所以它只适用于第三次。我认为在我的路由器或其他地方某处可能存在错误的代码,但我不知道它是什么。有什么建议吗?
答案 0 :(得分:1)
您需要检查订阅是否已加载文档。试试这个:
<template name="articleList">
<span>{{title}}</span>
</template>
Template.articleList.title = function () {
var doc = Articles.findOne({author: "Billy Bob"});
return doc && doc.title;
};
原因是,如果客户尚未通过DDP收到该文档,则findOne
来电将返回null
。当您尝试拨打null.title
时收到错误。
答案 1 :(得分:0)
试试这个:
<template name="articleList">
<span>{{article.title}}</span>
</template>
Template.articleList.article = function () {
return Articles.findOne({author: "Billy Bob"});
}