2

sever/publish.jsの には、次のようなものがあります。

Questions = new Meteor.Collection("questions");

Meteor.publish("questions", function(){
    return Questions.find();
});

client/app.jsがこのようなことをするときはいつでも:

Questions = new Meteor.Collection("questions");

var questionHandle = Meteor.subscribe("questions");

Meteor.methods({
    post: function(title){
        Questions.insert({title: title});
    }
});

$('.save').on('click', function(){
    var title = $('input[name="title"]').val();
    Meteor.call('post', title);
});

うまくいきません!しかし、コードを外部に置くと、サーバー データが更新されます。

Questions = new Meteor.Collection("questions");

var questionHandle = Meteor.subscribe("questions");

$('.save').on('click', function(){
    var title = $('input[name="title"]').val();
    Questions.insert({title: title});
});

これはバグですか、それとも何か不足していますか?

4

1 に答える 1

5

実サーバー データベースを更新する場合は、メソッドをサーバー上で定義する必要があります。クライアントでも定義すると、最初に実行されます(「レイテンシー補正」)。

Questions = new Meteor.Collection("questions");

Meteor.methods({
    post: function(title){
        Questions.insert({title: title});
    }
});

if (Meteor.isServer){
  Meteor.publish("questions", function(){
      return Questions.find();
  });
}

if (Meteor.isClient){
  var questionHandle = Meteor.subscribe("questions");

  $('.save').on('click', function(){
      var title = $('input[name="title"]').val();
      Meteor.call('post', title);
  });
}

ドキュメントEventedMind スクリーンキャストを見ることができます。

于 2013-07-06T00:24:23.513 に答える