2016-10-18 6 views
0

MeteorでSimpleSchemaを使用してオブジェクトをデータベースに挿入する前に、そのオブジェクトを検証しようとしています。私は、インサートを呼び出す流星メソッドからそれを印刷するようMeteor Simpleschemaのカスタムオブジェクトの検証

オブジェクトは、次のようになります。

channels: { '1': [ 'rect4557-6-4-5-7-4-2', 'rect4557-6-4-97-0-7-6-3' ] } }

私はそれにスキーマを装着せずにデータベースに挿入した場合、それが正常に動作します。しかし、私がSimpleSchemaを実行した場合、custom検証メソッドのconsole.logから出力されるフィールド値は空のオブジェクト{}です。検証を実行しなくても、SimpleSchemaを使用すると空のオブジェクトが格納されます。

simpleschema値出力を生成するコード:

Arch.schema = new SimpleSchema({ 
    channels: { 
    type: Object, 
    custom: function validateChannels() { 
     console.log("this.value:", this.value) 
    } 
}); 
Architectures.attachSchema(Architectures.schema); 

本当に、私は何をすべき?これはSimpleSchemaのバグですか?

+0

簡易スキーマコードを表示してください。 –

+0

ありがとう@MichelFloyd、いくつかのコードを追加 – xxor

答えて

1

blackbox: trueオプションを追加する必要があるようです。 SimpleSchemaはブラックボックスオブジェクトとしてマークしない限り、任意のオブジェクトキーをサポートしていません。 https://github.com/aldeed/meteor-simple-schema#blackbox

自動クリーニングの一部であるフィルタリングは、これを削除します。特定のinsertコールでそれを防ぐには、filter: falseオプションを渡すだけです。 https://github.com/aldeed/meteor-collection2#skip-removing-properties-that-are-not-in-the-schema

関連する問題