2015-03-03 4 views
4

Я делаю схему с мангусткой в ​​Nodejs. И я пытаюсь найти способ ограничить число символов в SchemaString. Я обнаружил, что можно использовать регулярное выражение с ключевым словом матча как:mongoose schema set max length для строки

var schema = new Schema({ 
{ 
    name: {type: String, match: '/^.{0,20}$/'} 
}); 

Но я просто хочу знать, если есть некоторый параметр напрямую указать максимальную длину, как это:

var schema = new Schema({ 
{ 
    name: {type: String, max: 20} 
}); 

Благодарим за помощь.

+1

'maxlength' должен быть в [выпуске Mongoose 4.0.0-RC2] (https://github.com/LearnBoost/mongoose/commit/b96d72440769a4fc038e3934b268b1ec648dd16d) – chridam

+0

Почему бы не сделать ограничения на вход, а не на сервере? Это было бы намного проще ... Думаю? – mjwrazor

ответ

8

В соответствии с этим issue на github, в настоящее время проверка длины не производится. Он будет доступен только в выпуске 4.0.0-rc2.

Однако вы можете создать эту проверку с помощью функции пути:

Schema.path('name').validate(function (v) { 
    return v.length <= 20; 
}, 'The maximum length is 20.'); 

Или вы можете использовать mongoose-validator. Из примера в их README:

var mongoose = require('mongoose'); 
var validate = require('mongoose-validator'); 

var nameValidator = [ 
    validate({ 
    validator: 'isLength', 
    arguments: [3, 50], 
    message: 'Name should be between 3 and 50 characters' 
    }), 
    validate({ 
    validator: 'isAlphanumeric', 
    passIfEmpty: true, 
    message: 'Name should contain alpha-numeric characters only' 
    }) 
]; 

var Schema = new mongoose.Schema({ 
    name: {type: String, required: true, validate: nameValidator} 
});