SimpleSchema: как проверить определенный массив

Как вы можете видеть ниже, в проверенный метод передается параметр массива. Для проверки я использую SimpleSchema.

клиент

const url = "/articles/bmphCpyHZLhTc74Zp"
example.call({ item: url.split('/') })

сервер

example = new ValidatedMethod({
    name    : 'example',
    validate: new SimpleSchema({
        item: {
            type: [String]
        }
    }).validator(),

    run({ item }) {
        console.log(item)
    }
})

Но я хотел бы подтвердить немного более конкретно. Таким образом, массив элементов должен состоять из трех элементов. Первый пуст, второй должен использовать значение, установленное allowedValues, а третий — идентификатор SimpleSchema.RegEx.Id.


person user3142695    schedule 06.07.2017    source источник
comment
Вы уверены, что хотите сохранить это как массив, а не как объект? Массив действительно следует использовать, когда каждый элемент массива концептуально является одним и тем же, где каждый элемент может быть взаимозаменяемым. То, как вы описываете свои данные, концептуально, три элемента вашего массива на самом деле представляют собой 3 разных поля. Было бы разумнее создать объект на клиенте из массива url.split(), а затем сохранить его в коллекции? Это также значительно облегчило бы проверку.   -  person Hashcut    schedule 06.07.2017
comment
@Hashcut Спасибо за это. Вы совершенно правы.   -  person user3142695    schedule 06.07.2017


Ответы (1)


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

AddressSchema = new SimpleSchema({
  street: {
    type: String,
    max: 100
  },
  city: {
    type: String,
    max: 50
  },
  state: {
    type: String,
    regEx: /^A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]$/
  },
  zip: {
    type: String,
    regEx: /^[0-9]{5}$/
  }
});

CustomerSchema = new SimpleSchema({
  billingAddress: {
    type: AddressSchema
  },
  shippingAddresses: {
    type: [AddressSchema],
    minCount: 1
  }
});

можно так поставить.

example = new ValidatedMethod({
    name    : 'example',
    validate: new SimpleSchema({
        item: {
            type: [CustomType],
            regEx: // your regex
        }
    }).validator(),

    run({ item }) {
        console.log(item)
    }
})
person MehulJoshi    schedule 06.07.2017
comment
пожалуйста, добавьте, что вы хотите проверить? так же, как AddressSchema, вы можете создать свой собственный тип. Ok? или скажите мне, какова ваша структура, и я напишу это для вас - person MehulJoshi; 06.07.2017