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