Пн goose - требуемый валидатор не работает по функции - PullRequest
0 голосов
/ 06 января 2020

Я передаю функцию необходимому валидатору в схеме mon goose, но она не срабатывает, если я не передаю никакое значение в поле.

В документации сказано следующее:

Валидаторы не работают с неопределенными значениями. Единственным исключением является обязательный валидатор.

Ссылка: https://mongoosejs.com/docs/validation.html

Если я передаю функцию, она не применяется?

РЕДАКТИРОВАТЬ - Совместное использование кода:

Определение моего поля:

field: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Model',
      required: !isBlock,
      autopopulate: true
    }

Функция, которая не запускается:

function isBlock() {
  return this.type === 'block'
}

Ответы [ 2 ]

1 голос
/ 06 января 2020

Отладка Я увидел, что проблема была с '!' оператор в вызове функции, сменив код на under, я решил свою проблему.

required: function () { return !isBlock(this.type) }

Я не понял, почему проблема была в операторе, но это работает, если у кого-то есть лучшее решение, пожалуйста, поделись здесь!

0 голосов
/ 06 января 2020

Я отправляю код ссылки, соответствующий этому, в противном случае Показать ваш код.

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const cryptoRandomString = require('crypto-random-string');

const userSchema = new Schema({
    firstName: {
        trim: true,
        type: String,
        required: [true, "firstName is required!"],
        validate(value) {
            if (value.length < 2) {
                throw new Error("firstName is invalid!");
            }
        }
    },
    lastName: {
        trim: true,
        type: String,
        required: [true, "lastName is required!"],
        validate(value) {
            if (value.length < 2) {
                throw new Error("lastName is invalid!");
            }
        }
    },
    email: {
        unique: [true, "Email already registered"],
        type: String,
        required: [true, "Email is required"]
    },
    mobile: {
        unique: [true, "Mobile Number alraedy available"],
        type: String,
        required: [true, "Mobile Number is required"],
        validate(value) {
            if (value.length !== 10) {
                throw new Error("Mobile Number is invalid!");
            }
        }
    },
    password: {
        type: String,
        required: [true, "Password is required"],
        validate(value) {
            if (value.length < 6) {
                throw new Error("Password must be atleast 6 characters!");
            }
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...