Можно ли проверить документ, напрямую переходящий в схему mon goose? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь проверить весь документ в коллекции, используя проверки, объявленные в документе схемы. Можно ли проверить их напрямую, передав их в схему и вернув true, если документ действителен?

моя схема goose выглядит следующим образом

export class sampleSchema {
  schemaDefinition = {
    key: {
      type: String,
      unique: true,
      min: 2,
      max: 50,
    },
    key1: {
      type: String,
      min: 2,
      max: 50,
    };
  }
}

действительные данные

{
  key:'sampleName'
  key1:'sampleName1'
}

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

Я могу успешно использовать validate (), но он проверяет только регулярное выражение, не учитывая условия min, max и типов, объявленные в схеме.

sample. js

const mongoose = require('mongoose');

async function validateSample(sample) {
  try {
    await sample.validate();
    console.log("validation passed");
    return true;
  } catch (error) {
    console.log(error.message);
    return false;
  }
}

async function execMethod(){
  var userSchema = new mongoose.Schema({
    phone: {
      type: String,
      min: 5,
      max: 10,
      validate: {
        validator: function(v) {
          return /^\d+$/.test(v);
        },
        message: props => `${props.value} is not a valid phone number!`
      },
      required: [true, 'User phone number required']
    }
  });

  var User = mongoose.model('user', userSchema);
  var user = new User({phone: '12345'}); 
  var user1 = new User({phone: '1234'});
  const result = await validateSample(user);
  const result1 = await validateSample(user1);
  console.log(result);  // returns true
  console.log(result1);  // returns true  //but it should return false as it fails to match min condition
}

execMethod()


...