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
})