Mongoose: Campo de array obrigatório gera erro quando definido como array vazio

Criado em 10 fev. 2015  ·  3Comentários  ·  Fonte: Automattic/mongoose

Eu tenho um campo de matriz com o seguinte esquema nesse campo:

parents:
    type: 'Array'
    required: true

Quando tento criar um documento com os seguintes dados:

data =
    parents: []

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

Estou tendo o erro a seguir:

ValidationError: Path `parents` is required.

Se eu colocar um valor dentro da matriz, ele funcionará da seguinte maneira:

data =
    parents: ['blah']

Da mesma forma, se eu remover required: true do esquema, ele também começará a funcionar.

Uma matriz vazia não é considerada satisfatória para a validação "necessária"? Eu entendo que é falso em javascript, mas há muitos casos em que matrizes e objetos vazios são destinados a documentos Mongo.

backwards-breaking

Comentários muito úteis

Concorde que os campos de array obrigatórios devem aceitar arrays vazios. Sempre pensei nisso dessa maneira, até que ontem tive um problema com o Mongoose.

Todos 3 comentários

Concordo, nós também tropeçamos nisso.

O comportamento assumido de required: true para nós era a presença de uma matriz, em vez de uma matriz que requer pelo menos um elemento.

Concorde que os campos de array obrigatórios devem aceitar arrays vazios. Sempre pensei nisso dessa maneira, até que ontem tive um problema com o Mongoose.

Vou encerrar em favor de # 5139. Irá mudar este comportamento no 5.0.

Esta página foi útil?
0 / 5 - 0 avaliações