0

Meteor アプリのスキーマと単純な検証方法を統合するためにCollection2パッケージを使用しています。

挿入は正常に機能し、適切にエラーが発生し、意図したとおりに有効な場合に挿入されます。ドキュメントによると、 update メソッドの使用はほとんど同じですが、スキーマごとにすべてが有効であるにもかかわらず、検証エラーが表示され続けます。

たとえば、スキーマに対して検証する新しいプロパティ (実際の家/アパート) を送信すると、問題なく動作します。そのプロパティを編集し、1 つのフィールドで 1 つの文字を変更すると、さまざまなフィールドでエラーが発生します。

私はちょっと途方に暮れています。それはかなり簡単です。Collection2 を導入する前は問題なくドキュメントを更新していましたが、パッケージ自体は使用されており、頻繁に更新されていることがわかっているため、パッケージ自体の問題ではないと思います。たぶん、このメソッドをサーバーに置く必要がありますか?

どんな助けでも大歓迎です。ありがとう!

クライアント側の JS ファイル:

Template.propertyEdit.events({
  'submit form': function(e){
    e.preventDefault();

    var property_details = {
      name: $(e.target).find('[name=name]').val(),
      address: $(e.target).find('[name=address]').val(),
      city: $(e.target).find('[name=city]').val(),
      state: $(e.target).find('[name=state]').val(),
      zipcode: $(e.target).find('[name=zipcode]')
    }

    Properties.update(this._id, {$set: property_details}, function(error,result){
      if(error){
        for(var i=0; Properties.simpleSchema().namedContext().invalidKeys().length > i; i++ ){
          throwError(Properties.simpleSchema().namedContext().invalidKeys()[i].message);
        }
      }else{
        alert("Property details updated");
        Router.go('propertyOverview', {_id: result});
      }
    });

  });

コレクション:

Properties = new Meteor.Collection2('properties', {
  schema: {
    name: {
        type: String,
        label: "Property Name",
        min: 1
    },
    address: {
        type: String,
        label: "Address",
        min: 1
    },
    city: {
        type: String,
        label: "City",
        min: 1
    },
    state: {
        type: String,
        label: "State",
        min: 2,
        max: 2
    },
    zipcode: {
        type: String,
        label: "Zip Code",
        min: 5,
        max: 11
    },
    userId: {
        type: String,
        label: "User Id",
        min: 8
    }
  }
});
4

1 に答える 1

0

最後に問題が発生しました。テンプレート、HTML では、値属性にコンテンツが含まれていても、プレースホルダー属性が値として登録されているようです。

私が持っていた:

<input name="zipcode" type="text" class="form-control" value="{{zipcode}}" placeholder="Enter a Zip Code" />

次のように変更しました。

<input name="zipcode" type="text" class="form-control" value="{{zipcode}}" />

そしてそれはうまくいきました:)

これが既知のものなのか、私が知っているべきだったのか、それともバグなのかはわかりません。構わず提出します。

于 2014-01-09T00:43:49.543 に答える