@raina
В Mongoose можно воспользоваться методом $size
для проверки длины массива. Метод $size
принимает в качестве аргумента ожидаемое значение длины массива и выполняет проверку на совпадение.
Пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
const schema = new mongoose.Schema({ arrayField: { type: [String], validate: { validator: function(v) { return v.length === 3; // проверяем, что длина массива равна 3 }, message: 'Массив должен содержать ровно 3 элемента' } } }); const Model = mongoose.model('Model', schema); const doc = new Model({ arrayField: ['item1', 'item2', 'item3'] }); doc.save(function(error) { console.log(error); // null }); const doc2 = new Model({ arrayField: ['item1', 'item2'] }); doc2.save(function(error) { console.log(error.message); // Массив должен содержать ровно 3 элемента }); |
В данном примере мы создаем схему с полем arrayField
, тип которого - массив из строк. Мы добавляем валидатор, который проверяет, что длина массива равна 3. Если длина массива не равна 3, то сохранение документа вызовет ошибку и мы можем получить текст этой ошибки.