Mongoose: Erforderliches Array-Feld gibt einen Fehler aus, wenn es als leeres Array festgelegt wird

Erstellt am 10. Feb. 2015  ·  3Kommentare  ·  Quelle: Automattic/mongoose

Ich habe ein Array-Feld mit dem folgenden Schema für dieses Feld:

parents:
    type: 'Array'
    required: true

Wenn ich versuche, ein Dokument mit den folgenden Daten zu erstellen:

data =
    parents: []

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

Ich bekomme folgenden Fehler:

ValidationError: Path `parents` is required.

Wenn ich einen Wert in das Array einfüge, funktioniert es wie folgt:

data =
    parents: ['blah']

Wenn ich required: true aus dem Schema entferne, funktioniert es auch.

Wird ein leeres Array für die "erforderliche" Validierung nicht als zufriedenstellend angesehen? Ich verstehe, dass es in Javascript falsch ist, aber es gibt viele Fälle, in denen leere Arrays und Objekte in Mongo-Dokumenten beabsichtigt sind.

backwards-breaking

Hilfreichster Kommentar

Stimmen Sie zu, dass erforderliche Array-Felder leere Arrays akzeptieren sollten. Ich habe immer so darüber nachgedacht, bis ich gestern ein Problem mit Mongoose hatte.

Alle 3 Kommentare

Zugegeben, wir sind darüber auch gestolpert.

Das angenommene Verhalten von required: true für uns das Vorhandensein eines Arrays und nicht eines Arrays, das mindestens ein Element erfordert.

Stimmen Sie zu, dass erforderliche Array-Felder leere Arrays akzeptieren sollten. Ich habe immer so darüber nachgedacht, bis ich gestern ein Problem mit Mongoose hatte.

Werde das zugunsten von #5139 schließen. Wird dieses Verhalten in 5.0 ändern.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen