2017-04-23 10 views
0

例外が発生している理由を理解できません。サンプルコードはオリジナルから切り捨てられますが、問題の行はlet subscription=から始まります。このコードはメソッド内にあるため、サーバー側でのみ発生します。予期しないTypeError:未定義(meteor-rxjs)のプロパティ 'apply'を読み取ることができません。

流星内で失敗した行がサブスクライブ(): return Meteor.subscribe.apply(Meteor, [name].concat(args.concat([{...

ここで例外とトレースバックです:

Exception while invoking method 'someMethod' TypeError: Cannot read property 'apply' of undefined 
at subscribe (c:\Build\myapp\node_modules\meteor-rxjs\dist\bundles\index.umd.js:609:36) 
at Observable._subscribe (c:\Build\myapp\node_modules\meteor-rxjs\dist\bundles\index.umd.js:628:30) 
at ZoneOperator.call (c:\Build\myapp\node_modules\meteor-rxjs\dist\bundles\index.umd.js:695:23) 
at Observable.subscribe (c:\Build\myapp\node_modules\rxjs\Observable.js:42:22) 

はここ流星メソッド内の私のコードです:

let list = MyCollection.find(aselector); 
    let subscription= MeteorObservable.subscribe("publishedList, selector).zone().subscribe(() => { 

     list = MyCollection.find(selector); 
     let myArray = list.fetch(); 
     let item: MyItem = myArray.length > 0? myArray[0]: null; 
    }); 
+0

1つはサーバー上で購読しません。購読する方法は決して必要ありません。 –

+0

Aha。私はfind/findOneがメソッド内のサーバー上で同期していると仮定したくなかった。しかし、それは必要と思われる。ありがとう – bobd

答えて

0

流星方法コレクション操作はシンプルな場合(コールバックなし)同期的であるため、サブスクライブを含むべきではありません。問題を解決してエッジのケースを無視して発生した余分なコードを削除すると、コードは次のように簡略化できます。

let item: MyItem = MyCollection.findOne(selector); 
関連する問題