Meteor.callを取得する方法テンプレートの値を戻しますか?

StackOverflow https://stackoverflow.com//questions/10677491

  •  12-12-2019
  •  | 
  •  

質問

私はこの概念に関するこの投稿を理解するためには、しかし、私はそれを得ることに失敗しています。次の簡単な設定があります。

/server/test.js
Meteor.methods({ 
  abc: function() {
    var result = {};
    result.foo = "Hello ";
    result.bar = "World!";
    return result;
  }
});

/client/myapp.js
var q = Meteor.call('abc');
console.log(q);
.

この構造はコンソールundefinedに戻ります。

myapp.jsファイルを変更する場合:

Meteor.call('abc', function(err, data) {
  !err ? console.log(data) : console.log(err);
}
.

私のコンソールにObjectを受け取ります。

理想的にこれは私がすることができたいのですが、それはコンソールを述べています:Cannot read property 'greeting' of undefined

/client/myapp.js
var q = Meteor.call('abc');

Template.hello.greeting = function() {
   return q.foo;
}
.

サーバオブジェクトからテンプレートにデータを渡す際のヘルプは大幅に感謝されます。私はまだJavaScriptとMeteorを学んでいます。

ありがとう!

他のヒント

Npm.requireには非同期の動作があるために発生します。それがMeteor.callのコールバックを書く必要がある理由です。

ソリューションがあるだけで、install(mrt add npm)を使用するだけで、これでMeteor.sync(//...)という名前の関数を取得できます。これにより、Meteor.call()の両方のゲームと非同期を実行できます。

リファレンス: http://www.sitePoint。COM / create-a-meteor-app-uniting-npm-module /

私はゲットーソリューションに行きました。しかし、それは私のために働いています、それは私にとって重要です。以下は私のコードです。概念では、私は考えて、OPの問題を解決します。

クライアントのmain.js:

Meteor.setInterval(function() {
    confirmLogin();

}, 5000); 
.

これは5秒ごとにconfirmlogin()関数を実行します。

ConfirmLogin関数(クライアントのmain.js):

function confirmLogin() {
    Meteor.call('loggedIn', function (error, result) {
        Session.set("loggedIn", result);
    });

}
.

LoggedInメソッド(サーバーのmain.js):

loggedIn: function () {
    var toReturn = false;
    var userDetails = Meteor.user();
    if (typeof userDetails["services"] !== "undefined") {
        if (typeof userDetails["services"]["facebook"] != "undefined") {
            toReturn = true;
        }
    }

    return toReturn;
},
.

関連ヘルパー:

loggedIn: function () {
    return Session.get("loggedIn");
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top