2

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

我有一个 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我设置的属性)。

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

4

1 回答 1

4

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

Template.results.result = function() {
    var obj = Results.findOne({'type' : 'test'});
    return obj && obj.result;
}
于 2012-04-16T00:48:38.520 回答