2

なぜ私がこれを書いたら:

/client/Items.js

Template.Items.onCreated(function() {
  console.log('Methor.call');
  Meteor.call('Items.findAll', function (err, resp) {
    console.log('Methor.call callback');
    // Here I will use resp expecting it contains the response
    // returned by the method
    // ...
    return;
  });
  return;
});

/ItemsMethods.js

Meteor.methods({
  'Items.findAll': function () {
    return Items.find({});
  }
});

コールバックは黙って無視されます。つまり、コールバックは実行されず、エラーは発生しませんか?

これreturn Items.find({});をこれに置き換えると、return Items.find({}).fetch();すべて期待どおりに機能することに注意してください。

4

2 に答える 2

2

Meteor メソッドでカーソルを返す場合、カーソルはシリアル化できないため、コールバックは呼び出されません。ドキュメントに記載されているように、Meteor メソッドはEJSON 可能な値を返すか、例外をスローする必要があります。

実際にはGitHubに機能リクエストがあり、この問題について詳しく説明しています。

于 2015-12-15T20:17:55.207 に答える
1

Items.find({});取得したデータへの一種のポインターであるカーソルを返します。

使用Items.find({}).fetch();すると、オブジェクトの配列が返されます。

于 2015-12-15T18:41:00.620 に答える