私は Meteor を初めて使用し、非 Web ベースのサーバーに接続して Meteor アプリを書き始めました。すべてのデータはこのサーバーを介してルーティングされる必要があるため、関連するオブジェクトを取得して操作するための REST インターフェイスがあります。
今、この Web サービスのコレクションを作成する方法に行き詰まっています。ここに示すアプローチを使用しようとしました: https://medium.com/meteor-js/how-to-connect-meteor-js-to-an-external-api-93c0d856433b
これは、現在の結果を取得するために機能します。しかし、レコードを追加/削除/更新すると、まったく更新されません。
サーバー側では、次のように公開しています。
Meteor.publish('someThings', function() {
var self = this;
try {
var records = HTTP.get("http://localhost:6789/things/", {auth: "user:passwd"});
_.each(records.data, function(record) {
var thing = {
uuid: record.uuid,
title: record.title,
};
self.added('things', thing.uuid, thing);
});
self.ready();
} catch (error) {
console.log(error);
}
}
);
それからグローバルに、私はコレクションを持っています:
SomeThings = new Meteor.Collection("things");
そして、React コンポーネントで次のように使用します。
SomeThings = new Meteor.Collection("things");
getMeteorData() {
return {
things: SomeThings.find({}).fetch()
};
},
クライアントのどこかに、これを追加しました(ハウツーのように):
Tracker.autorun(function() {
Meteor.subscribe('someThings');
});
最後に、サーバー側には、操作を行う関数がいくつかあります。REST インターフェイスを介して 1 回、コレクションで 1 回 (例: 挿入):
addThing: function(title) {
result = Meteor.http.post("http://localhost:6789/things/",
{auth: "user:passwd", params: {title:title}});
SomeThings.insert(result.data);
}
added()
関数と同様の関数について何かを読みましMeteor.publish()
たが、これを使用してサーバーとクライアントの間、またはコレクションと UI 要素の間で「即時」同期を有効にする方法/かどうかを理解できませんでした。
基本的に、データベースではなくRESTインターフェースに基づくリアクティブコレクションを構築する方法を知りたいです。
どうすればこれを達成できるかについて、誰かがアドバイス/ヒントをくれますか?