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 Node.js para recuperar e inspeccionar datos de objetos brutos de la devnet de Sui.


Resumen

En este tutorial, el uso del SuiClient realiza una Operación de Lectura, consultando la devnet de Sui para un objeto Token No Fungible (NFT) específico para ver sus atributos en cadena.

Qué se construye: 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: Habilidades básicas de línea de comandos.

1: Configuración del proyecto

  1. Cree y navegue a un nuevo directorio:

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

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

    npm install @mysten/sui

2: Inicializar el Cliente

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

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

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

Nota: En devnet, los objetos se eliminan con frecuencia durante las limpiezas de la red. Si el ID que se muestra a continuación falla, es posible que necesite encontrar un nuevo ID de objeto en el Sui Explorer.

Agregue el siguiente código a index.js:

// Un Object ID conocido en devnet (Ejemplo NFT)
const TARGET_OBJECT_ID = '0x7d6539b7a423b035109b823e20c641c73defd23b8f3107b38d1d368688c2797c';

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

// 2. Ejecutar la búsqueda
const response = await client.getObject({
id: TARGET_OBJECT_ID,
// "options" determina la cantidad de datos que devuelve el nodo.
// Solicitamos estrictamente el contenido (campos) para mantener la carga útil pequeña.
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: Ejecución y verificación

Ejecute el script en su terminal:

node index.js

Comprender la salida

Debería ver una estructura JSON como esta:

{
"objectId": "0x7d...",
"version": "120",
"digest": "AuF...",
"type": "0x2::devnet_nft::DevNetNFT",
"content": {
"dataType": "moveObject",
"fields": {
"name": "Sui DevNet NFT",
"description": "Un NFT creado por el 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 cadena (por ejemplo, el nombre y la dirección del NFT).

Próximos pasos

Ha obtenido correctamente los datos brutos, pero es probable que haya notado el parámetro options en el código. Para comprender exactamente qué datos puede solicitar, consulte la Referencia de la API.