Hay dos tablas de usuarios y actividades.
Puedo unirme a estos usando withGraphJoined
. La respuesta json es así,
[ { user: 'first', activity: [{ type: 'act1' }, { type: 'act2' }], }, { user: 'second', activity: [{ type: 'act3' }, { type: 'act2' }], }, ];
Ahora quiero obtener solo la primera actividad y convertir la matriz actual en el primer objeto de actividad. {user:"second", activity:{type:"act3}}
Intenté esto pero aún obtengo toda la actividad en matriz.
User.query() .withGraphJoined('activity') .modifyGraph('activity', (builder) => builder.first());
Esto depende de cómo defina la relación si desea que devuelva un solo objeto, entonces la relación debe usar Model.HasOneRelation
o Model.BelongsToOneRelation
sin embargo, si solo desea devolver una sola actividad de muchas, puede limitar los resultados
.modifyGraph('activity', (builder) => builder.orderBy('created_at', 'desc').limit(1));
pero aún devolverá una matriz con un elemento al que puede acceder por activity[0]
la única forma en que puedo pensar es si asigna manualmente este primer elemento en then
Me gusta
.then(user => { user.activity = user.activity[0] ? user.activity[0] : {} res.json(user) })
para estar seguro, puede verificar si el elemento existe primero para evitar un error nulo