Los documentos de Mongoose sobre el required validador no incluyen ninguna explicación sobre { {X1}} realmente significa.

Supongo que es bastante obvio que undefined no pasará este validador y se permitirán todos los valores que se evalúen como verdaderos (!!v). Pero, ¿qué pasa con la cadena nula y vacía?

Si no pasan ese validador, ¿hay una forma estándar de Mongoose para permitir algo más que undefined o es escribir un validador personalizado la única forma?

0
Sebastian Nowak 30 ene. 2016 a las 02:23

2 respuestas

La mejor respuesta

Consulte validation.

Los validadores no se ejecutan en valores undefined. La única excepción es el validador obligatorio .

Pruebe este siguiente esquema

var CommentSchema = new mongoose.Schema({
    body: {
        type: String, required: true
    }
});

Guarde el campo body con null y '',

   var c1 = new Comment({
        body: null, 
    });

   var c1 = new Comment({
        body: '', 
    });

Ambas no pasan la validación. Ambos no pasan la validación.

Para validar solo undefined, creo que podría hacerse mediante una validación personalizada

CommentSchema.path ('body'). Validate (function (body) {return typeof body! === 'undefined';}, 'Body can be undefined');

Actualización: consulte este enlace

ejecutar validadores en campos no definidos no es compatible y actualmente no está planeado

En este enlace se realizan varios trucos.

1
zangw 30 ene. 2016 a las 14:34

Agregando a la respuesta de zangw, actualmente la única forma razonable de permitir algo que no sea undefined es pasar una función personalizada a la propiedad required. No se puede hacer a través de validate ya que los validadores personalizados no se ejecutan en valores no definidos.

var schema = new mongoose.Schema({
    field: { type: String, required: function ()
    {
        return this.field === undefined;
    }}
});
0
Sebastian Nowak 2 feb. 2016 a las 10:35