2017-04-18 2 views
0

J'ai un doc enregistré dans MongoDB comme ceci:Mangouste. Retirer les champs de sauvegarde qui ne sont pas présents dans le schéma

{ 
    title: 'title', 
    author: 'author name', 
    body: 'the body', 
    admin: 'admin user' 
} 

Et voici le schéma dans Mongoose:

var blogSchema = new Schema({ 
    title: String, 
    author: String, 
    body: String 
}); 

Je voudrais que le sauver , le champ "admin" a été supprimé du document, est-ce possible? Puis-je automatiser ceci dans l'événement pré-enregistrer?

Merci.

+0

Pouvez-vous montrer comment vous enregistrez le blog. Idéalement, il ne doit pas enregistrer le champ admin s'il n'est pas défini dans le schéma. –

+0

Vous devez donc renvoyer le document sauvegardé au client, mais vous ne voulez pas afficher le champ admin, n'est-ce pas? – thelonglqd

+0

Nop, le document a été précédemment enregistré dans la base de données avec un autre mécanisme, et maintenant le champ admin n'est pas nécessaire ... – chemitaxis

Répondre

0

Ok, la manière correcte de la suppression d'un champ qui ne figure pas dans le schéma et est présent dans le document est:

doc.set('field', undefined, { strict: false }) // strict is default true, you need to add if you are using strict mode 

Vous pouvez l'utiliser par exemple dans votre intergiciels, dans mon cas dans la pre-save middleware. J'ai trouvé la réponse dans un comment

Je ne trouve pas encore de mode d'automatisation.