Meteor Collection2 Update выдает ошибки

Я использую пакет Collection2 для интеграции схемы и простого метода проверки для моего приложения Meteor.

Вставки работают нормально, выдают соответствующие ошибки и вставляются, когда они действительны, как и предполагалось. Согласно документам, использование метода обновления почти не отличается, но ошибки проверки продолжают появляться, даже если все соответствует схеме.

Так, например, я отправлю новое свойство (настоящий дом/квартиру), которое проверяется на соответствие схеме, и оно работает без проблем. Я пойду отредактирую это свойство, изменю одну букву в 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
    }
  }
});

person Colton45    schedule 08.01.2014    source источник
comment
В вашем примере отсутствует .val(), например $(e.target).find('[name=name]').val()   -  person nathan-m    schedule 09.01.2014
comment
Спасибо Натан, плохая опечатка. Ошибки все еще происходят, несмотря на мою дрянную работу по вставке.   -  person Colton45    schedule 09.01.2014
comment
Дополнительный вопрос: почему вы не используете AutoForm?   -  person mquandalle    schedule 09.01.2014
comment
Когда я читал об этом, у меня уже было что-то «идет». Позже обязательно интегрирую.   -  person Colton45    schedule 09.01.2014


Ответы (1)


Наконец-то увидел проблему... в шаблоне 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}}" />

И это сработало :)

Не уверен, что это то, что просто известно, и я должен был знать, или ошибка. Я представлю его независимо.

person Colton45    schedule 09.01.2014
comment
Хм. некоторые плагины копируют атрибут placeholder в атрибут value для браузеров, в которых нет html5. - person nathan-m; 09.01.2014