Я использую пакет 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
}
}
});
.val()
, например$(e.target).find('[name=name]').val()
- person nathan-m   schedule 09.01.2014