كيفية جلب بيانات الكائنات
الجمهور: المطورون الذين ينفذون أول عملية قراءة لـ Sui.
الهدف: كتابة برنامج نصي Node.js لاسترداد وفحص بيانات الكائنات الخام من Sui devnet.
نظرة عامة
في هذا البرنامج التعليمي، يؤدي استخدام SuiClient إلى إجراء عملية قراءة، والاستعلام عن Sui devnet لكائن رمز غير قابل للاستبدال (NFT) لعرض سماته على السلسلة.
ما تم بناؤه: نص برمجي Node.js خفيف الوزن يتصل بالشبكة، ويطلب كائنًا من خلال معرفه، ويطبع استجابة JSON.
المتطلبات الأساسية
- Node.js: v18.0.0 أو أحدث.
- Package Manager:
npmأوyarn. - Terminal: مهارات أساسية في سطر الأوامر.
الخطوة 1: إعداد المشروع
-
قم بإنشاء دليل جديد وانتقل إليه:
mkdir sui-data-fetcher && cd sui-data-fetcher -
تهيئة مشروع Node وتهيئته لوحدات ES:
npm init -y
npm pkg set type="module" -
قم بتثبيت Sui TypeScript SDK:
npm install @mysten/sui
الخطوة 2: تهيئة العميل
قم بإنشاء ملف باسم index.js. ابدأ باستيراد العميل وتوصيله بـ devnet.
import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
// التهيئة
const NETWORK = 'devnet';
// 1. تهيئة العميل
// يقوم getFullnodeUrl تلقائيًا بحل نقطة نهاية RPC الصحيحة لـ 'devnet'
const client = new SuiClient({
url: getFullnodeUrl(NETWORK),
});
console.log(`✅ Connected to Sui ${NETWORK}`);
الخطوة 3: اكتب منطق الاستعلام
استعلام عن كائن معروف "devnet رمز غير قابل للاستبدال (NFT)".
ملاحظة: في
devnet، يتم حذف الكائنات بشكل متكرر أثناء مسح الشبكة. إذا فشل المعرف أدناه، فقد تحتاج إلى العثور على معرف كائن جديد من مستكشف Sui.
قم بإلحاق الرمز التالي بـ index.js:
// معرف كائن معروف على devnet (مثال NFT)
const TARGET_OBJECT_ID = '0x7d6539b7a423b035109b823e20c641c73defd23b8f3107b38d1d368688c2797c';
async function fetchObjectData() {
try {
console.log(`🔍 الاستعلام عن الكائن: ${TARGET_OBJECT_ID}...`);
// 2. تنفيذ عملية الجلب
const response = await client.getObject({
id: TARGET_OBJECT_ID,
// "options" تحدد مقدار البيانات التي تُرجعها العقدة.
// نطلب المحتوى (الحقول) بدقة لإبقاء الحمولة صغيرة.
options: {
showContent: true,
showType: true
}
});
// 3. التعامل مع الاستجابة
if (response.error) {
throw new Error(`لم يتم العثور على الكائن: ${response.error.code}`);
}
console.log('--- بيانات الكائن ---');
console.dir(response.data, { depth: null, colors: true });
} catch (err) {
console.error('❌ فشل الاستعلام:', err.message);
}
}
fetchObjectData();
الخطوة 4: التشغيل والتحقق
قم بتشغيل النص البرمجي في جهازك الطرفي:
node index.js
فهم الإخراج
يجب أن ترى بنية JSON مثل هذا:
{
"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: تجزئة للتحقق من إصدار الكائن.type: تعريف نوع لغة التحريك المحدد (Package::Module::Type).content.fields: البيانات الفعلية المخزنة على السلسلة (على سبيل المثال، اسم وعنوان NFT).
الخطوات التالية
لقد قمت بجلب البيانات الأولية بنجاح، ولكنك على الأرجح لاحظت معلمة options في الكود. لفهم البيانات التي يمكنك طلبها بالضبط، راجع مرجع واجهة برمجة التطبيقات.