Dans mon projet, je veux autoriser des champs optionnels dans un document, mais je ne veux pas enregistrer de valeurs nulles, c'est-à-dire que je veux supprimer tout champ contenant des valeurs nulles.
les valeurs peuvent être modifiées en cours d'exécution.
J'ai trouvé comment rendre un champ nul si l'utilisateur n'a pas envoyé de données pour le mettre à jour (tous les champs pour lesquels l'utilisateur a envoyé des valeurs vides doivent être supprimés).
Si l'utilisateur envoie son prénom et son nom sous forme de chaîne vide dans le formulaire, je veux les supprimer.
await Employee.findOneAndUpdate({ _id: employee._id },
{$set: {firstName: null, lastName: null, ...req.body.newEmployee}}, { new: true, upsert: false });
J'ai essayé d'ajouter une option $unset mais j'ai obtenu une erreur
MongoError: Updating the path 'firstName' would create a conflict at 'firstName'
J'ai pensé à le supprimer après la mise à jour (comme une deuxième commande) mais je ne trouve pas de moyen de connaître/obtenir tous les champs null de l'employé, et je ne peux pas obtenir de valeurs fixes à vérifier parce qu'il y a beaucoup de combinaisons pour les valeurs null/non null, surtout s'il y a plus de champs dans le futur. Par exemple, je ne peux pas dire si (FN : null, LN : null ou FN : "johny", LN : null etc )