J'ai un champ email, où je veux des emails uniques. Je veux aussi avoir la possiblité d'un champ vide. Je ne veux pas qu'il vérifie l'unicité si l'email est vide/null/absent.Mongoose/keystonejs: champ unique sauf si le champ est vide
Voici mon schéma de liste définie à Keystone:
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 expose le schéma mangouste, donc je peux avoir accès. Je pourrais ajouter une validation personnalisée qui fait une requête sauf si le champ est vide, mais j'espère quelque chose de plus élégant.
J'ai déjà beaucoup de données, je ne sais pas si cela complique l'indexation.
J'ai essayé d'utiliser sparse: true, mais cela n'a pas fonctionné pour moi. – Tom
Il peut être utile de l'essayer sur une base de données vide, juste pour vérifier que ce n'est pas le fait que vous avez déjà des données. Sinon, il va probablement falloir être un crochet de pré-sauvegarde. –