流星 - 渲染模板与集合中的文档

时间:2012-04-16 00:39:03

标签: meteor

基本上,我只是尝试使用MongoDB find()调用返回的文档的result属性来呈现模板。我有自动订阅。

我有一个html模板

<template name="results">
    status: {{result}}
</template>

我正在尝试在js文件中呈现它:

if (Meteor.is_client) {
    Template.results.result = function() {
        return Results.find({'type': 'test'}).fetch()[0].result;
    }
}

mongo {type: "test", result: "success"}中有记录。代码不断抛出“未定义没有属性结果”的错误。但是,当我只返回Results.find({'type': 'test'}).fetch()[0]时,它实际上返回一个对象,而不是未定义(如果我将其记录到控制台,我可以看到它确实具有我设置的result属性。)

我唯一能想到的是它可能与meteor的反应行为有关 - 也许MongoDB调用最初返回undefined,然后更新以包含正确的文档。那是对的吗?如果是这样,我如何获得该文档的result属性的值?

1 个答案:

答案 0 :(得分:4)

在服务器在结果中发送文档之前,客户端启动后立即呈现模板。试试这个(findOnefetch()[0]的简写):

Template.results.result = function() {
    var obj = Results.findOne({'type' : 'test'});
    return obj && obj.result;
}