ऑब्जेक्ट डेटा कैसे प्राप्त करें
लक्षित दर्शक: अपने पहले Sui रीड ऑपरेशन को लागू करने वाले डेवलपर्स।
लक्ष्य: Sui devnet से कच्चे ऑब्जेक्ट डेटा को प्राप्त करने और निरीक्षण करने के लिए एक Node.js स्क्रिप्ट लिखना।
अवलोकन
इस ट्यूटोरियल में, आप SuiClient का उपयोग करके एक रीड ऑपरेशन करते हैं। आप Sui devnet से एक ऑन-चेन नॉन-फंजिबल टोकन (NFT) ऑब्जेक्ट को क्वेरी करते हैं ताकि उसकी विशेषताओं की जांच की जा सके।
आप क्या बनाते हैं:
एक हल्का Node.js स्क्रिप्ट जो नेटवर्क से जुड़ता है, उसके आईडी द्वारा एक ऑब्जेक्ट का अनुरोध करता है, और JSON प्रतिक्रिया को प्रिंट करता है।
पूर्वापेक्षाएँ
- Node.js: v18.0.0 या बाद का संस्करण।
- पैकेज मैनेजर:
npmयाyarn। - टर्मिनल: बुनियादी कमांड-लाइन कौशल।
1. प्रोजेक्ट सेट अप करें
-
एक नई निर्देशिका बनाएं और उसमें जाएँ:
Terminalmkdir sui-data-fetcher && cd sui-data-fetcher -
एक Node प्रोजेक्ट प्रारंभ करें और इसे ES मॉड्यूल के लिए कॉन्फ़िगर करें:
Terminalnpm init -ynpm pkg set type="module" -
Sui TypeScript SDK स्थापित करें:
Terminalnpm install @mysten/sui
2. क्लाइंट को प्रारंभ करें
index.js नामक एक फ़ाइल बनाएं। क्लाइंट को आयात करके और इसे devnet से जोड़कर शुरू करें।
import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
// कॉन्फ़िगरेशन
const NETWORK = 'devnet';
// 1. क्लाइंट प्रारंभ करें
// getFullnodeUrl स्वचालित रूप से 'devnet' के लिए सही RPC एंडपॉइंट हल करता है
const client = new SuiClient({
url: getFullnodeUrl(NETWORK),
});
console.log(`✅ Connected to Sui ${NETWORK}`);
3. क्वेरी लॉजिक लिखें
एक ज्ञात "devnet नॉन-फंजिबल टोकन (NFT)" ऑब्जेक्ट को क्वेरी करें।
devnet पर, नेटवर्क रीसेट के दौरान ऑब्जेक्ट अक्सर हटा दिए जाते हैं। यदि नीचे दिया गया आईडी विफल हो जाता है, तो आपको Sui Explorer से एक नया ऑब्जेक्ट आईडी खोजना पड़ सकता है।
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" यह निर्धारित करता है कि नोड कितना डेटा लौटाता है।
// हम पेलोड को छोटा रखने के लिए केवल content (फील्ड्स) और type का अनुरोध करते हैं।
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: विशिष्ट Move भाषा प्रकार परिभाषा (Package::Module::Type)।content.fields: ऑन-चेन संग्रहीत वास्तविक डेटा (उदाहरण के लिए, NFT का नाम, विवरण और छवि URL)।
अगले कदम
आपने सफलतापूर्वक कच्चा डेटा प्राप्त कर लिया है, लेकिन आपने कोड में options पैरामीटर पर ध्यान दिया होगा। उपलब्ध क्वेरी मापदंडों का पता लगाने और सीखना जारी रखने के लिए:
- सभी उपलब्ध प्रतिक्रिया विकल्पों और फ़िल्टरों के लिए
getObjectAPI संदर्भ देखें। - बैच क्वेरी के लिए कई ऑब्जेक्ट्स कैसे प्राप्त करें और स्वामित्व वाले ऑब्जेक्ट्स कैसे प्राप्त करें की समीक्षा करें।
- ऑन-चेन स्थिति परिवर्तनों को बनाने और निष्पादित करने के लिए अगले ट्यूटोरियल, लेनदेन भेजने के लिए write ऑपरेशन का उपयोग पर आगे बढ़ें।