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"}ます。コードは、「undefined has no attribute result」というエラーをスローし続けます。ただし、返されると、実際には未定義ではなくオブジェクトが返されます(コンソールにログを記録すると、設定した属性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 に答える