Aviso de traducción IA

Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.

ctx.makeResource()

Crea y devuelve una nueva instancia de resource sin escribir ni modificar ctx.resource. Es adecuado para escenarios que requieren múltiples recursos independientes o un uso temporal.

Casos de uso

EscenarioDescripción
Múltiples recursosCarga de múltiples fuentes de datos simultáneamente (por ejemplo, lista de usuarios + lista de pedidos), utilizando un recurso independiente para cada una.
Consultas temporalesConsultas de un solo uso que se descartan después de utilizarse, sin necesidad de vincularlas a ctx.resource.
Datos auxiliaresUso de ctx.resource para los datos principales y makeResource para crear instancias de datos adicionales.

Si solo necesita un único recurso y desea vincularlo a ctx.resource, es más apropiado utilizar ctx.initResource().

Definición de tipos

makeResource<T = FlowResource>(
  resourceType: 'APIResource' | 'SingleRecordResource' | 'MultiRecordResource' | 'SQLResource'
): T;
ParámetroTipoDescripción
resourceTypestringTipo de recurso: 'APIResource', 'SingleRecordResource', 'MultiRecordResource', 'SQLResource'

Valor de retorno: La instancia de recurso recién creada.

Diferencia con ctx.initResource()

MétodoComportamiento
ctx.makeResource(type)Solo crea y devuelve una nueva instancia, no escribe en ctx.resource. Puede llamarse varias veces para obtener múltiples recursos independientes.
ctx.initResource(type)Crea y vincula si ctx.resource no existe; lo devuelve directamente si ya existe. Garantiza que ctx.resource esté disponible.

Ejemplos

Un solo recurso

const listRes = ctx.makeResource('MultiRecordResource');
listRes.setResourceName('users');
await listRes.refresh();
const users = listRes.getData();
// ctx.resource conserva su valor original (si lo tiene)

Múltiples recursos

const usersRes = ctx.makeResource('MultiRecordResource');
usersRes.setResourceName('users');
await usersRes.refresh();

const ordersRes = ctx.makeResource('MultiRecordResource');
ordersRes.setResourceName('orders');
await ordersRes.refresh();

ctx.render(
  <div>
    <p>Número de usuarios: {usersRes.getData().length}</p>
    <p>Número de pedidos: {ordersRes.getData().length}</p>
  </div>
);

Consulta temporal

// Consulta de un solo uso, no contamina ctx.resource
const tempRes = ctx.makeResource('SingleRecordResource');
tempRes.setResourceName('users');
tempRes.setFilterByTk(1);
await tempRes.refresh();
const record = tempRes.getData();

Notas

  • El recurso recién creado debe llamar a setResourceName(name) para especificar la colección y luego cargar los datos mediante refresh().
  • Cada instancia de recurso es independiente y no afecta a las demás; es adecuada para cargar múltiples fuentes de datos en paralelo.

Relacionado