現在MeteorJSプロジェクトでnode-hue-api npmライブラリを動作させようとしています。私は既に橋の検索と接続ができています(ただし、流星の流れに完全には従っていません)。私はしかし、光を探して立ち往生しています。Metro.call()経由でオブジェクトから削除されたメソッド
私はブリッジコンポーネントのメソッドで次のコードを定義し、認証されたクライアントを取得するには:私は今、認証されたクライアントを取得するには、このメソッドを呼び出しています、私の光法(異なるファイル)で
import { Settings } from '../../settings/settings';
import { HueApi } from 'node-hue-api';
Meteor.methods({
'philipsHue.bridges.client'() {
const hueSettings = Settings.findOne({ type: 'philips-hue' });
return new HueApi(hueSettings.hostname, hueSettings.username);
}
});
を:
をMeteor.methods({
'lights.scan'() {
var hueClient = new HueApi(Meteor.call('philipsHue.bridges.client'));
hueClient.lights().then((val) => {
val.lights.forEach(function (hueLight) {
let dbLight = Lights.findOne({ id: hueLight.id });
if (dbLight) {
// we already have a db copy of this light, check for changes
}
else {
// we need a new local copy for this light
dbLight.insert(hueLight);
}
})
});
}
});
返されたHueApiオブジェクトには正しい変数がありますが、すべてのメソッドが削除されています。未定義のメソッドエラーが発生します。これは、オブジェクトがMeteor.call()
に渡された場合にのみ発生します。同じ関数内にオブジェクトを作成すると、そのメソッドがすべて存在します。このメソッドの動作をストリッピング引き起こしている何GitHub
:
これは私が持つ問題を抱えているライブラリのクラスですか?どうすれば修正できますか?上記のコメントから投稿
この 'lights.scan'が実際には失敗しているところで述べたように、他のファイルのコードを表示してください。 –
リンクが下部にあります。ファイル自体のコード自体はうまく動作しますが、メソッドのスコープはMeteorと連携していないようです –
MeteorのメソッドはDDPで動作します。メソッドやメソッドで本格的な "オブジェクト"ではなくJSONだけを送信しますそのような。 Meteorがメソッド呼び出しなどを通じて送信するものは、Chromeの開発ツールを使用して[ネットワーク]タブに移動し、WS(Web Sockets)でフィルタリングすることで表示できます。 Collectionクエリー結果の結果を '変換 'しなければならないのと同じように、生のJSON変換をあなたが望む完全なオブジェクトに戻すためには、おそらく同様のことが必要です。 JavaScriptは実際には「オブジェクト」を扱うのではなく、プロトタイプを使ってそれらをシミュレートすることを覚えておいてください。 – CodeChimp