Как в mongoose проверить длину массива?

Пользователь

от raina , в категории: Другие , 6 месяцев назад

Как в mongoose проверить длину массива?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от keyon.brown , 6 месяцев назад

@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, то сохранение документа вызовет ошибку и мы можем получить текст этой ошибки.