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:
npmoyarn. - Terminal: conocimientos básicos de línea de comandos.
1. Configurar el proyecto
-
Crea y navega a un nuevo directorio:
Terminalmkdir sui-data-fetcher && cd sui-data-fetcher -
Inicializa un proyecto de Node y configúralo para módulos ES:
Terminalnpm init -ynpm pkg set type="module" -
Instala el SDK de TypeScript de Sui:
Terminalnpm install @mysten/sui
2. Inicializar el cliente
Crea un archivo llamado index.js. Comienza 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
Consulta un objeto de "Token No Fungible (NFT) de devnet" conocido.
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:
// 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:
node index.js
Comprender la salida
Deberías 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": "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:
- Consulta la referencia de la API de
getObjectpara ver todas las opciones de respuesta y filtros disponibles. - Consulta Cómo recuperar varios objetos y Cómo recuperar objetos propios para realizar consultas por lotes.
- Pasa al siguiente tutorial, Uso de la operación de escritura para enviar una transacción, para crear y ejecutar cambios de estado en la cadena.