문제

해봤 을 이해하는 게시물에 대한 이 개념, 그러나,내가 실패하는 그것을 얻을 수 있습니다.나는 다음과 같은 간단한 설치:

/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 내 console.

이상적으로 이것은 무엇을 나는 다음과 같이 할 수 있지만,그것은 작동하지 않는 콘솔에서: Cannot read property 'greeting' of undefined

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

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

에 어떤 도움을 전달하는 데이터 서버에서 개체 템플릿으로 주시면 감사하겠습니다.저는 아직도 배우 JavaScript&있습니다.

감사합니다!

도움이 되었습니까?

해결책

Meteor.call 문서:

클라이언트에서 전달하지 않는 경우 콜백을 그리고 당신은 내 스텁,호출이 반환 정의되지 않은,그리고 당신은 것을 얻을 수있는 방법이 없는 반환 값의 방법입니다.는 것이기 때문에 클라이언트가 없 섬유 없습니다 그래서 실제로 어떤 방법으로 차단할 수 있습니다 원격 실행하는 방법입니다.

그래서,당신은 그것을하고 싶은 다음과 같다:

Meteor.call('abc', function(err, data) {
  if (err)
    console.log(err);

  Session.set('q', data);
});

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

이 반동적으로 업데이트 템플릿을 한 번 데이터를 사용할 수 있습니다.

다른 팁

이 때문에 발생 Npm.require 는 비동기는 동작입니다.는 이유는 당신이 쓰기에 대한 콜백 Meteor.call.

그러나 솔루션을 사용하여, install(mrt add npm) 을 얻을 것이라는 기능 Meteor.sync(//...) 이 두 작업을 수행할 수 있습니다 게임:동기/비동기에 Meteor.call().

참고: http://www.sitepoint.com/create-a-meteor-app-using-npm-module/

을 얻을 수 있습의 반환 값이 유성 방법을 사용하기 위해서 템플릿을 사용하여 반응성 변수.체크아웃 작업에 대한 데모 Meteorpad

가는 유대인 솔루션입니다.하지만 그것이 나를 위해,무엇이 문제다.아래에 나의 코드는 개념에서,내 생각,를 해결 OP 의 문제입니다.

에서 클라이언트의 main.js:

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

}, 5000); 

이 실행 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;
},

관련 helper:

loggedIn: function () {
    return Session.get("loggedIn");
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top