0

コレクションに送信される前に SimpleSchema に対してデータを検証しようとしていますが、何らかの理由でこのエラーで検証できません。

Exception while invoking method 'createVendorCategory' { stack: 'TypeError: Cannot call method \'simpleSchema\' of undefined

次のように、2 つの SimpleSchemas を持つ 1 つのコレクションがあります。

Vendors = new Mongo.Collection('vendors'); //Define the collection.

VendorCategoriesSchema = new SimpleSchema({
    name: {
        type: String,
        label: "Category"
    },
    slug: {
        type: String,
        label: "Slug"
    },
    createdAt : {
        type: Date,
        label: "Created At",
        autoValue: function(){
            return new Date()//return the current date timestamp to the schema
        }
    }
});

VendorSchema = new SimpleSchema({
    name: {
        type: String,
        label: "Name"
    },
    phone: {
        type: String,
        label: "Phone"
    },
    vendorCategories:{
        type: [VendorCategoriesSchema],
        optional: true
    }
});
Vendors.attachSchema(VendorSchema);

ユーザーが Vendor ドキュメントを作成すると、 vendorCategory が追加されます。

これが私のクライアント側の外観です。

Template.addCategory.events({
    'click #app-vendor-category-submit': function(e,t){
        var category = {
            vendorID: Session.get("currentViewingVendor"),
            name: $.trim(t.find('#app-cat-name').value),
            slug: $.trim(t.find('#app-cat-slug').value),
        };

        Meteor.call('createVendorCategory', category, function(error) {
            //Server-side validation
            if (error) {
                alert(error);
            }
        });
    }
});

そして、これが私のサーバー側のMeteor.methodsの外観です

createVendorCategory: function(category) 
{ 
    var vendorID =  Vendors.findOne(category.vendorID);
    if(!vendorID){
        throw new Meteor.Error(403, 'This Vendor is not found!');
    }
    //build the arr to be passed to collection
    var vendorCategories = {
        name: category.name,
        slug: category.slug
    }

    var isValid = check( vendorCategories, VendorSchema.vendorCategories.simpleSchema());//This is not working?
    if(isValid){
        Vendors.update(VendorID, vendorCategories);
        // return vendorReview;
        console.log(vendorCategories);
    }
    else{
        throw new Meteor.Error(403, 'Data is not valid');
    }
}

ここからエラーが発生していると思います。

var isValid = check( vendorCategories, VendorSchema.vendorCategories.simpleSchema());//This is not working?

どんな助けでも大歓迎です。

4

1 に答える 1

1

サブオブジェクトのサブスキーマをすでに定義しているため、それに対して直接チェックできます。

check(vendorCategories,VendorCategoriesSchema)
于 2016-01-03T19:44:12.323 に答える