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
}
}
});