Meteor需要多次才能成功读取数据库

时间:2014-04-03 21:37:09

标签: meteor

说我有一个需要返回文章标题的助手。

<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]

所以它只适用于第三次。我认为在我的路由器或其他地方某处可能存在错误的代码,但我不知道它是什么。有什么建议吗?

2 个答案:

答案 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"});
}