96 votes

Convertir la documentation de Mongoose en json

J'ai retourné les documents de Mongoose en json de cette façon :

UserModel.find({}, function (err, users) {
    return res.end(JSON.stringify(users));
}

Cependant, user.__proto__ a également été renvoyé. Comment puis-je retourner sans cela ? J'ai essayé mais ça n'a pas marché :

UserModel.find({}, function (err, users) {
    return res.end(users.toJSON());    // has no method 'toJSON'
}

4voto

Leo Li Points 167

Peut-être un peu à l'écart de la réponse, mais si quelqu'un qui cherche à faire l'inverse, vous pouvez utiliser Model.hydrate() (depuis mongoose v4) pour convertir un objet javascript (JSON) en un document mongoose.

Un cas utile serait lorsque vous utilisez Model.aggregate(...) . Parce qu'il s'agit en fait d'un objet JS ordinaire, vous pouvez le convertir en un document mangouste afin d'accéder aux éléments suivants Model.method (par exemple, votre propriété virtuelle définie dans le schéma).

PS. J'ai pensé qu'il devrait y avoir un fil conducteur comme " Convertir json en docs Mongoose "Mais en fait, ce n'est pas le cas, et comme j'ai trouvé la réponse, je pense que ce n'est pas une bonne idée de faire un auto-postage et une auto-réponse.

2voto

bindaas Points 1

Vous pouvez utiliser res.json() pour jsonifier n'importe quel objet. lean() supprimera tous les champs vides dans la requête mongoose.

UserModel.find().lean().exec(function (err, users) { return res.json(users); }

2voto

Dudi Points 2180

Essayez cette option :

  UserModel.find({}, function (err, users) {
    //i got into errors using so i changed to res.send()
    return res.send( JSON.parse(JSON.stringify(users)) );
    //Or
    //return JSON.parse(JSON.stringify(users));
  }

2voto

yaya pro Points 683

Ça a marché pour moi :

Products.find({}).then(a => console.log(a.map(p => p.toJSON())))


Si vous voulez utiliser les getters, vous devez également ajouter cette option (lors de la définition du schéma) :

new mongoose.Schema({...}, {toJSON: {getters: true}})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X