Saltar al contenido principal

Cómo obtener datos de objetos

Audiencia: desarrolladores que implementan su primera operación de lectura en Sui. Objetivo: escribir un script de Node.js para recuperar e inspeccionar datos de objetos sin procesar de la devnet de Sui.


Resumen

En este tutorial, utilizas SuiClient para realizar una operación de lectura. Consultas la devnet de Sui para obtener un objeto de token no fungible (NFT) en la cadena e inspeccionar sus atributos.

Lo que vas a construir: Un script ligero de Node.js que se conecta a la red, solicita un objeto por su ID e imprime la respuesta JSON.

Prerrequisitos

  • Node.js: v18.0.0 o posterior.
  • Gestor de paquetes: npm o yarn.
  • Terminal: conocimientos básicos de línea de comandos.

1. Configurar el proyecto

  1. Crea y navega a un nuevo directorio:

    Terminal
    mkdir sui-data-fetcher && cd sui-data-fetcher
  2. Inicializa un proyecto de Node y configúralo para módulos ES:

    Terminal
    npm init -y
    npm pkg set type="module"
  3. Instala el SDK de TypeScript de Sui:

    Terminal
    npm install @mysten/sui

2. Inicializar el cliente

Crea un archivo llamado index.js. Comienza importando el cliente y conectándolo a la devnet.

index.js
import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';

// Configuración
const NETWORK = 'devnet';

// 1. Inicializar el cliente
// getFullnodeUrl resuelve automáticamente el endpoint RPC correcto para 'devnet'
const client = new SuiClient({
url: getFullnodeUrl(NETWORK),
});

console.log(`✅ Conectado a Sui ${NETWORK}`);

3. Escribir la lógica de consulta

Consulta un objeto de "Token No Fungible (NFT) de devnet" conocido.

nota

En devnet, los objetos se eliminan con frecuencia durante los reinicios de la red. Si el ID siguiente falla, es posible que debas obtener un nuevo ID de objeto desde el Sui Explorer.

Añade el siguiente código a index.js:

index.js
// Un ID de objeto conocido en devnet (Ejemplo de NFT)
const TARGET_OBJECT_ID = '0x7d6539b7a423b035109b823e20c641c73defd23b8f3107b38d1d368688c2797c';

async function fetchObjectData() {
try {
console.log(`🔍 Consultando objeto: ${TARGET_OBJECT_ID}...`);

// 2. Ejecutar la consulta
const response = await client.getObject({
id: TARGET_OBJECT_ID,
// "options" determina cuántos datos devuelve el nodo.
// Solicitamos estrictamente el contenido (campos) para mantener pequeña la carga útil.
options: {
showContent: true,
showType: true
}
});

// 3. Manejar la respuesta
if (response.error) {
throw new Error(`Objeto no encontrado: ${response.error.code}`);
}

console.log('--- Datos del objeto ---');
console.dir(response.data, { depth: null, colors: true });

} catch (err) {
console.error('❌ La consulta falló:', err.message);
}
}

fetchObjectData();

4. Ejecutar y verificar

Ejecuta el script en tu terminal:

Terminal
node index.js

Comprender la salida

Deberías ver una estructura JSON como esta:

Output
{
"objectId": "0x7d...",
"version": "120",
"digest": "AuF...",
"type": "0x2::devnet_nft::DevNetNFT",
"content": {
"dataType": "moveObject",
"fields": {
"name": "Sui DevNet NFT",
"description": "An NFT created by the Sui DevNet",
"url": "ipfs://..."
}
}
}
  • digest: un hash que verifica la versión del objeto.
  • type: la definición de tipo específica del lenguaje Move (Paquete::Módulo::Tipo).
  • content.fields: los datos reales almacenados en la cadena (por ejemplo, el nombre, la descripción y la URL de la imagen del NFT).

Próximos pasos

Has recuperado correctamente los datos sin procesar, pero seguramente te habrás fijado en el parámetro options del código. Para explorar los parámetros de consulta disponibles y seguir aprendiendo: