API संदर्भ: getObject
32-बाइट हेक्साडेसिमल ऑब्जेक्ट आईडी द्वारा किसी व्यक्तिगत Sui ऑब्जेक्ट के ऑन-चेन विवरण और मेटाडेटा प्राप्त करता है।
इस विधि का उपयोग Move पैकेज परिभाषाओं को क्वेरी करने, struct फ़ील्ड्स का निरीक्षण करने और ऑब्जेक्ट के स्वामित्व की पुष्टि करने के लिए करें। आप यह भी जांच सकते हैं कि किसी लेनदेन ने ऑब्जेक्ट को संशोधित या हटाया है या नहीं। चूंकि getObject एक रीड ऑपरेशन है जो सीधे फुलनोड की स्थानीय स्थिति से परोसा जाता है, यह लेनदेन सबमिट किए बिना या गैस खर्च किए बिना तुरंत निष्पादित हो जाता है।
- वर्ग:
SuiClient - पैकेज:
@mysten/sui/client - ऑपरेशन प्रकार: रीड ऑपरेशन (कोई गैस नहीं, कोई वॉलेट हस्ताक्षर नहीं)
हस्ताक्षर
client.getObject(input: GetObjectParams): Promise<SuiObjectResponse>
पैरामीटर
यह विधि एक एकल कॉन्फ़िगरेशन ऑब्जेक्ट स्वीकार करती है जिसमें निम्नलिखित गुण होते हैं:
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
id | string | हाँ | 32-बाइट हेक्साडेसिमल ऑब्जेक्ट आईडी, उदाहरण के लिए 0x123...। |
options | SuiObjectDataOptions | नहीं | प्रतिक्रिया में विशिष्ट डेटा फ़ील्ड को टॉगल करने के लिए कॉन्फ़िगरेशन फ़्लैग। सभी फ़ील्ड के लिए डिफ़ॉल्ट false है। |
SuiObjectDataOptions
डिफ़ॉल्ट रूप से, getObject केवल ऑब्जेक्ट का संदर्भ लौटाता है, विशेष रूप से इसका ID, संस्करण और डाइजेस्ट। वास्तविक डेटा प्राप्त करने के लिए, आपको इन फ़्लैग्स को स्पष्ट रूप से true पर सेट करना होगा।
| विकल्प | विवरण |
|---|---|
showType | Move प्रकार लौटाता है, उदाहरण के लिए 0x2::coin::Coin<0x2::sui::SUI>। |
showContent | पार्स किए गए Move डेटा फ़ील्ड्स लौटाता है, जो ऑब्जेक्ट की आंतरिक स्थिति का प्रतिनिधित्व करते हैं। |
showOwner | इस आइटम का मालिक पता या ऑब्जेक्ट लौटाता है। |
showDisplay | UI रेंडरिंग के लिए Display मानक मेटाडेटा (नाम, विवरण, छवि URL) लौटाता है। |
showStorageRebate | वस्तु से संबंधित स्टोरेज रिबेट लौटाता है। |
showBcs | क्लाइंट-साइड डिकोडिंग के लिए कच्चे BCS (Binary Canonical Serialization) बाइट्स लौटाता है। |
showPreviousTransaction | इस ऑब्जेक्ट को संशोधित करने वाले अंतिम लेनदेन का डाइजेस्ट लौटाता है। |
रिटर्न मान
एक Promise लौटाता है जो 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..."
}
}
उपयोग के उदाहरण
जांचें कि क्या कोई ऑब्जेक्ट मौजूद है
यह सबसे हल्का प्रश्न है। यह कोई डेटा फ़ील्ड नहीं मांगता, केवल डाइजेस्ट और संस्करण संख्या मांगता है।
const response = await client.getObject({
id: '0x123...'
});
if (response.error) {
console.log("ऑब्जेक्ट मौजूद नहीं है।");
} else {
console.log("ऑब्जेक्ट संस्करण पर मौजूद है:", response.data.version);
}
NFT मेटाडेटा और Display फ़ील्ड प्राप्त करें
यह अनुरोध ऑन-चेन फ़ील्ड्स को पढ़ने के लिए content और UI रेंडरिंग एसेट्स प्राप्त करने के लिए display मांगता है।
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);
}
ऑब्जेक्ट के स्वामित्व की पुष्टि करें
किसी विशिष्ट खाता पते के पास किसी आइटम का स्वामित्व है या नहीं, यह जांचने के लिए इसका उपयोग करें।
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और रीड ऑपरेशंस के वैचारिक डिज़ाइन को समझाता है।