update tojson findone example deletemany json node.js mongoose

tojson - ¿Cómo obtener un documento secundario solo en mangosta?



mongoose tojson transform (2)

Prueba este:

module.exports.getUserStories = function(userId, callback){ User.find({_id: userId },{''library.story''}).then(function(user){ if(user){ callback(user.library); }}); };

Docs aquí

Intento extraer solo un documento secundario de una matriz que tenga el siguiente esquema:

const UserSchema = Schema({ name: { type: String },library:[{ story:{type: Schema.Types.ObjectId,ref: ''Story''} }], });

intenté usar:

module.exports.getUserStories = function(userId, callback){ User.findOne({_id: userId },callback) .select(''library.story'') };

y da este resultado:

{ "_id": "5949615072e15d2b34fa8f9d", "library": [ { "story": "592ae46cf2a0ba2b208cb092" }, { "story": "592ae608df26d80790092fe9" }, { "story": "592ae46cf2a0ba2b208cb092" } ] }

pero lo que espero obtener es solo esto:

[ { "story": "592ae46cf2a0ba2b208cb092" }, { "story": "592ae608df26d80790092fe9" }, { "story": "592ae46cf2a0ba2b208cb092" } ]

Ya traté de usar una doble selección como:

module.exports.getUserStories = function(userId, callback){ User.findOne({_id: userId },callback) .select(''library.story'') .select(''story'') };

Pero da el mismo resultado


Se espera que esta salida regrese mediante "seleccionar", pero simplemente puede preparar los datos devueltos para que sean los que necesita de la siguiente manera:

User.findOne({_id: userId }).select(''library'').then(function(result){ if(result){ //If there is returned item var stories = result.library; //Continue ... } },function(error){ //Error handling })