수색…


Meteor.call의 기초

Meteor.call(name, [arg1, arg2...], [asyncCallback])

(1) 이름 문자열
(2) 호출 할 메소드의 이름
(3) arg1, arg2 ... EJSON 가능 객체 [선택]
(4) asyncCallback 함수 [선택]

한편으로는 다음과 같이 할 수 있습니다 : ( Session 변수 또는 ReactiveVar 를 통해)

    var syncCall = Meteor.call("mymethod") // Sync call 

이것은 서버 측에서 다음과 같이하면됩니다.

    Meteor.methods({
        mymethod: function() {
            let asyncToSync =  Meteor.wrapAsync(asynchronousCall);
            // do something with the result;
            return  asyncToSync; 
        }
    });

반면에 콜백 결과를 통해 유지하려고 할 때가 있습니다.

고객 입장에서 :

Meteor.call("mymethod", argumentObjectorString, function (error, result) {
    if (error) Session.set("result", error); 
    else Session.set("result",result);
}
Session.get("result") -> will contain the result or the error;

//Session variable come with a tracker that trigger whenever a new value is set to the session variable. \ same behavior using ReactiveVar

서버 측

Meteor.methods({
    mymethod: function(ObjectorString) {
        if (true) {
            return true;
        } else {
            throw new Meteor.Error("TitleOfError", "ReasonAndMessageOfError"); // This will and up in the error parameter of the Meteor.call
        }
    }
});

Meteor가 클라이언트와 서버 사이에서 통신하는 다양한 방법을 제안한다는 것을 보여주는 것입니다.

세션 변수 사용

서버 측

Meteor.methods({
  getData() {
    return 'Hello, world!';
  }
});

고객 입장에서

<template name="someData">
  {{#if someData}}
    <p>{{someData}}</p>
  {{else}}
    <p>Loading...</p>
  {{/if}}
</template>
Template.someData.onCreated(function() {
  Meteor.call('getData', function(err, res) {
    Session.set('someData', res);
  });
});

Template.someData.helpers({
  someData: function() {
    return Session.get('someData');
  }
});

ReactiveVar 사용하기

서버 측

Meteor.methods({
  getData() {
    return 'Hello, world!';
  }
});

고객 입장에서

<template name="someData">
  {{#if someData}}
    <p>{{someData}}</p>
  {{else}}
    <p>Loading...</p>
  {{/if}}
</template>
Template.someData.onCreated(function() {

  this.someData = new ReactiveVar();

  Meteor.call('getData', (err, res) => {
    this.someData.set(res);
  });
});

Template.someData.helpers({
  someData: function() {
    return Template.instance().someData.get();
  }
});

reactive-var 패키지가 필요합니다. 그것을 추가하려면 meteor add reactive-var run meteor add reactive-var 실행 meteor add reactive-var .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow