2016-06-27 13 views
0

私は次のようにいくつかのbefore.updateのアクションを実行するためにmeteor-collection-hooksを使用してください:アトムで編集中にも、このエラーが表示されていることを流星とタイポスクリプトの定義はインポートされませんか?

Property '$set' does not exist on type 'Modifier'. 

注:

MyCollection.before.update(function (userId, doc, fieldNames, modifier : Mongo.Modifier, options) { 
    modifier.$set.code = Utils.uppercase(modifier.$set.code); 
    modifier.$set.name = Utils.uppercaseFirst(modifier.$set.name); 

サーバーを実行しているとき、私は得ます。

ただし、実行時にこれが機能し、コードと名前が必要に応じて更新されます。何が間違っているかもしれないかのヒント?

問題を特定できませんでした。私はこれは入力問題と思われますが、私のtypings.jsonにはModifierの定義をオブジェクトとして含む "typings/meteor/index.d.ts"が正しく含まれています。

よろしくお願いいたします。

答えて

0

最初に、1つのことを明確にしておきましょう。タイプコピーのエラーはです。エラーがあってもコードはJSに変換されます。流星はあなたが書いたタイスクリプトではなく、JSを実行するので、あなたのコレクションが更新されます。

アトムとコンパイラは、Mongo.Modifier型の定義が間違っています。私はあなたがMongoを定義typingsから宣言ファイルを、使用していると仮定として:

declare namespace Mongo { 
    interface Selector { 
     [key: string]:any; 
    } 
    interface Selector extends Object {} 
    interface Modifier {} 
    interface SortSpecifier {} 
    interface FieldSpecifier { 
     [id: string]: Number; 
    } 
} 

クイックソリューション:あなたの関数からMongo.Modifierタイプをドロップすると、エラーが離れて行くだろうとあなたはとにかくそれから何かを取得されていません。

解決方法:MongoDBドキュメントに従ってファイルを更新し、プルリクエストをサブミットしてください:)

関連する問題