मुख्य कंटेंट तक स्किप करें

API संदर्भ: getObject

32-बाइट हेक्साडेसिमल ऑब्जेक्ट आईडी द्वारा किसी व्यक्तिगत Sui ऑब्जेक्ट के ऑन-चेन विवरण और मेटाडेटा प्राप्त करता है।

इस विधि का उपयोग Move पैकेज परिभाषाओं को क्वेरी करने, struct फ़ील्ड्स का निरीक्षण करने और ऑब्जेक्ट के स्वामित्व की पुष्टि करने के लिए करें। आप यह भी जांच सकते हैं कि किसी लेनदेन ने ऑब्जेक्ट को संशोधित या हटाया है या नहीं। चूंकि getObject एक रीड ऑपरेशन है जो सीधे फुलनोड की स्थानीय स्थिति से परोसा जाता है, यह लेनदेन सबमिट किए बिना या गैस खर्च किए बिना तुरंत निष्पादित हो जाता है।

  • वर्ग: SuiClient
  • पैकेज: @mysten/sui/client
  • ऑपरेशन प्रकार: रीड ऑपरेशन (कोई गैस नहीं, कोई वॉलेट हस्ताक्षर नहीं)

हस्ताक्षर​

हस्ताक्षर
client.getObject(input: GetObjectParams): Promise<SuiObjectResponse>

पैरामीटर​

यह विधि एक एकल कॉन्फ़िगरेशन ऑब्जेक्ट स्वीकार करती है जिसमें निम्नलिखित गुण होते हैं:

पैरामीटरप्रकारआवश्यकविवरण
idstringहाँ32-बाइट हेक्साडेसिमल ऑब्जेक्ट आईडी, उदाहरण के लिए 0x123...।
optionsSuiObjectDataOptionsनहींप्रतिक्रिया में विशिष्ट डेटा फ़ील्ड को टॉगल करने के लिए कॉन्फ़िगरेशन फ़्लैग। सभी फ़ील्ड के लिए डिफ़ॉल्ट false है।

SuiObjectDataOptions​

डिफ़ॉल्ट रूप से, getObject केवल ऑब्जेक्ट का संदर्भ लौटाता है, विशेष रूप से इसका ID, संस्करण और डाइजेस्ट। वास्तविक डेटा प्राप्त करने के लिए, आपको इन फ़्लैग्स को स्पष्ट रूप से true पर सेट करना होगा।

विकल्पविवरण
showTypeMove प्रकार लौटाता है, उदाहरण के लिए 0x2::coin::Coin<0x2::sui::SUI>।
showContentपार्स किए गए Move डेटा फ़ील्ड्स लौटाता है, जो ऑब्जेक्ट की आंतरिक स्थिति का प्रतिनिधित्व करते हैं।
showOwnerइस आइटम का मालिक पता या ऑब्जेक्ट लौटाता है।
showDisplayUI रेंडरिंग के लिए Display मानक मेटाडेटा (नाम, विवरण, छवि URL) लौटाता है।
showStorageRebateवस्तु से संबंधित स्टोरेज रिबेट लौटाता है।
showBcsक्लाइंट-साइड डिकोडिंग के लिए कच्चे BCS (Binary Canonical Serialization) बाइट्स लौटाता है।
showPreviousTransactionइस ऑब्जेक्ट को संशोधित करने वाले अंतिम लेनदेन का डाइजेस्ट लौटाता है।

रिटर्न मान​

एक Promise लौटाता है जो SuiObjectResponse में रिज़ॉल्व होता है। यह प्रतिक्रिया एक मानक लिफाफा है जो सफलता और त्रुटि दोनों स्थितियों को समाहित करता है:

SuiObjectResponse लिफाफा
┌─────────────────────────────────────────────────────────────┐
│ SuiObjectResponse │
├──────────────────────────────┬──────────────────────────────┤
│ सफलता: `response.data` │ त्रुटि: `response.error` │
│ - objectId, version │ - code: "notExists" │
│ - type, digest │ - code: "deleted" │
│ - content, owner, display │ - object_id │
└──────────────────────────────┴──────────────────────────────┘

सफलता प्रतिक्रिया (data)​

जब ऑब्जेक्ट मौजूद होता है और सुलभ बना रहता है, तो data प्रॉपर्टी में SuiObjectData होता है।

प्रतिक्रिया: सफलता
{
"data": {
"objectId": "0x...",
"version": "10",
"digest": "...",
"type": "0x2::coin::Coin<0x2::sui::SUI>", // showType: true होने पर उपस्थित
"content": { // showContent: true होने पर उपस्थित
"dataType": "moveObject",
"fields": { "balance": "1000000000" }
},
"owner": { // showOwner: true होने पर उपस्थित
"AddressOwner": "0xabc..."
}
}
}

त्रुटि प्रतिक्रिया (error)​

यदि किसी लेनदेन ने ऑब्जेक्ट को हटा दिया, उसे किसी अन्य ऑब्जेक्ट में लपेट दिया, या आईडी मौजूद नहीं है, तो error प्रॉपर्टी त्रुटि विवरण लौटाती है।

प्रतिक्रिया: त्रुटि
{
"error": {
"code": "notExists",
"object_id": "0x..."
}
}

उपयोग के उदाहरण​

जांचें कि क्या कोई ऑब्जेक्ट मौजूद है​

यह सबसे हल्का प्रश्न है। यह कोई डेटा फ़ील्ड नहीं मांगता, केवल डाइजेस्ट और संस्करण संख्या मांगता है।

checkExists.js
const response = await client.getObject({
id: '0x123...'
});

if (response.error) {
console.log("ऑब्जेक्ट मौजूद नहीं है।");
} else {
console.log("ऑब्जेक्ट संस्करण पर मौजूद है:", response.data.version);
}

NFT मेटाडेटा और Display फ़ील्ड प्राप्त करें​

यह अनुरोध ऑन-चेन फ़ील्ड्स को पढ़ने के लिए content और UI रेंडरिंग एसेट्स प्राप्त करने के लिए display मांगता है।

fetchNFT.js
const nft = await client.getObject({
id: '0x123...',
options: {
showContent: true,
showDisplay: true
}
});

if (nft.data) {
const name = nft.data.content?.fields?.name;
const imageUrl = nft.data.display?.data?.image_url;
console.log(`NFT नाम: ${name}, छवि: ${imageUrl}`);
} else {
console.warn("आइटम लोड करने में विफल रहा:", nft.error);
}

ऑब्जेक्ट के स्वामित्व की पुष्टि करें​

किसी विशिष्ट खाता पते के पास किसी आइटम का स्वामित्व है या नहीं, यह जांचने के लिए इसका उपयोग करें।

verifyOwnership.js
const item = await client.getObject({
id: '0x123...',
options: { showOwner: true }
});

const owner = item.data?.owner;

if (owner && owner.AddressOwner === '0xMyAddress...') {
console.log("आप इस आइटम के मालिक हैं।");
}

सामान्य त्रुटियाँ​

त्रुटि कोडकारणसमाधान
notExistsऑब्जेक्ट आईडी वैध हेक्स है, लेकिन नेटवर्क ऑब्जेक्ट का पता नहीं लगा सकता।आईडी सत्यापित करें या पुष्टि करें कि पिछले लेनदेन ने ऑब्जेक्ट को हटाया नहीं है।
deletedएक लेनदेन ने ऑब्जेक्ट को सक्रिय स्थिति से हटा दिया, जला दिया, या छाँट दिया।आप getObject के माध्यम से हटाए गए ऑब्जेक्ट्स का ऐतिहासिक डेटा पुनः प्राप्त नहीं कर सकते।
invalid_paramप्रदान किया गया ऑब्जेक्ट आईडी एक मान्य 32-बाइट हेक्स स्ट्रिंग नहीं है।सुनिश्चित करें कि आईडी 0x से शुरू हो और इसकी लंबाई सही हो।

यह भी देखें​

  • multiGetObjects: एक ही बैच अनुरोध में कई ऑब्जेक्ट्स का विवरण प्राप्त करता है।
  • getOwnedObjects: किसी विशिष्ट पते के स्वामित्व वाले सभी ऑब्जेक्ट्स को सूचीबद्ध करता है।
  • ऑब्जेक्ट डेटा कैसे प्राप्त करें: एक Node.js स्क्रिप्ट में getObject को लागू करने के लिए एक चरण-दर-चरण ट्यूटोरियल प्रदान करता है।
  • SuiClient आर्किटेक्चर: SuiClient और रीड ऑपरेशंस के वैचारिक डिज़ाइन को समझाता है।