Mongoose: Обязательное поле массива выдает ошибку, если задано как пустой массив

Созданный на 10 февр. 2015  ·  3Комментарии  ·  Источник: Automattic/mongoose

У меня есть поле массива со следующей схемой в этом поле:

parents:
    type: 'Array'
    required: true

Когда я пытаюсь создать документ со следующими данными:

data =
    parents: []

Translation.create data, (err, translations) ->
    console.log err, translations

Я получаю следующую ошибку:

ValidationError: Path `parents` is required.

Если я помещаю значение в массив, он работает, например:

data =
    parents: ['blah']

Точно так же, если я удалю required: true из схемы, он также начнет работать.

Не считается ли пустой массив удовлетворительным для «обязательной» проверки? Я понимаю, что в javascript это неверно, но есть много случаев, когда в документах Mongo предназначены пустые массивы и объекты.

backwards-breaking

Самый полезный комментарий

Согласитесь, что обязательные поля массива должны принимать пустые массивы. Я всегда так думал, пока вчера у меня не возникла проблема с Mongoose.

Все 3 Комментарий

Договорились, мы тоже запутались в этом.

Предполагаемым поведением required: true для нас было наличие массива, а не массива, для которого требуется хотя бы один элемент.

Согласитесь, что обязательные поля массива должны принимать пустые массивы. Я всегда так думал, пока вчера у меня не возникла проблема с Mongoose.

Закрою это в пользу №5139. Изменит это поведение в 5.0.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги