Ich habe ein E-Mail-Feld, wo ich einzigartige E-Mails möchte. Ich möchte auch die Möglichkeit eines leeren Feldes haben. Ich möchte nicht, dass die Eindeutigkeit überprüft wird, wenn die E-Mail leer ist/null/nicht vorhanden ist.Mungo/keystonejs: einzigartiges Feld außer wenn das Feld leer ist
Hier ist meine Liste Schema in Keystone definiert:
Book.add({
number: { type: Types.Number },
email: { type: Types.Email, initial: true, index: true, unique: true },
token: { type: Types.Text },
title: { type: Types.Text, initial: true },
author: { type: Types.Text, initial: true },
name: { type: Types.Text, initial: true },
dedication: { type: Types.Textarea, initial: true },
image: { type: Types.CloudinaryImage }
});
Keystone macht die Mungo-Schema, so kann ich zugreifen. Ich könnte eine benutzerdefinierte Validierung hinzufügen, die eine Abfrage außer wenn Feld leer macht, aber ich hoffe auf etwas eleganteres.
Ich habe bereits viele Daten, ich weiß nicht, ob das die Indizierung komplexer macht.
Ich habe versucht mit sparse: True, aber das hat nicht für mich funktioniert. – Tom
Es könnte sich lohnen, es zuerst auf einer leeren Datenbank auszuprobieren, nur um zu überprüfen, ob es nicht bereits Daten sind. Wenn nicht, wird es wahrscheinlich ein Pre-Save-Hook sein. –