0

Backbone.jsを使用してプロファイルビューをルーティングしているので、/ userに属するデータを表示でき、その部分は正常に機能します。ユーザー名に基づいて_idを生成し、それをサーバー公開関数に渡してログに記録することができます。ただし、サブスクライブ関数で結果をクライアントにログに戻すと、結果は次のようになります。

オブジェクト{停止:関数、準備完了:関数}

//Client Side
Template.userquery.userproject = function() {
    var query = Session.get('userquery');
    var user = Meteor.users.findOne({username: query});
    if (user) {
        console.log(user._id); //(works)
        campaigns = Meteor.subscribe('userquery', user._id, function() {
            console.log('ready'); //(works)
        });
        console.log(campaigns); //(returns Object {stop: function, ready: function})
        return campaigns;
    }
}
//Server Side
Meteor.publish('userquery', function(userid) {
    console.log('break');
    console.log(userid); //(I get userid in Terminal)
    var campaigns = Campaigns.find({owner: userid}, {fields: {owner: 1, name: 1}});
    if (campaigns) {
        console.log(campaigns);
        return campaigns;
    }
});

この関数に何かが欠けていますか?検索が2回生成されていたため、自動公開をオフにしました。

4

1 に答える 1

1

Meteor.subscribeドキュメントによると、「stop()メソッドとready()メソッドを提供するハンドルを返します。」したがって、表示されている動作は意図されたものです。

于 2013-03-19T23:10:12.897 に答える