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

API संदर्भ: multiGetObjects

उनके 32-बाइट हेक्साडेसिमल ऑब्जेक्ट आईडी द्वारा एक ही बैच अनुरोध में कई Sui ऑब्जेक्ट्स के ऑन-चेन विवरण और मेटाडेटा प्राप्त करता है।

इस विधि का उपयोग कई ऑब्जेक्ट क्वेरीज़ को एक ही नेटवर्क कॉल में संयोजित करने के लिए करें, जिससे व्यक्तिगत रूप से ऑब्जेक्ट क्वेरी करने की तुलना में विलंबता कम हो जाती है। चूंकि multiGetObjects एक रीड ऑपरेशन है जो सीधे फुलनोड की स्थानीय स्थिति से परोसा जाता है, यह लेनदेन सबमिट किए बिना या गैस खर्च किए बिना तुरंत निष्पादित होता है।

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

अवलोकन​

multiGetObjects को कॉल करना लूप में getObject को कॉल करने की तुलना में कहीं अधिक कुशल है। यह कई ऑब्जेक्ट क्वेरीज़ को एक ही रिमोट प्रोसीजर कॉल (RPC) में संयोजित करके नेटवर्क विलंब को कम करता है।

क्रमिक बनाम बैच तुलना
क्रमिक getObject (N राउंड ट्रिप्स):
App ── getObject(A) ──► Fullnode ──► App ── getObject(B) ──► Fullnode

बैच multiGetObjects (1 राउंड ट्रिप):
App ──────────── multiGetObjects([A, B, C]) ────────────► Fullnode
App ◄─────────── [ResultA, ResultB, ResultC] ─────────── Fullnode

हस्ताक्षर​

हस्ताक्षर
client.multiGetObjects(input: MultiGetObjectsParams): Promise<SuiObjectResponse[]>

पैरामीटर​

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

पैरामीटरप्रकारआवश्यकविवरण
idsstring[]हाँ32-बाइट हेक्साडेसिमल ऑब्जेक्ट आईडी की एक ऐरे।
optionsSuiObjectDataOptionsनहींविशिष्ट डेटा फ़ील्ड को टॉगल करने के लिए कॉन्फ़िगरेशन फ़्लैग। अनुरोधित सभी ऑब्जेक्ट्स पर लागू होता है।
नोट

अधिकांश सार्वजनिक RPC नोड्स आमतौर पर प्रति अनुरोध 50 आईडी की सीमा लागू करते हैं। बड़े बैचों के लिए, आपको अपनी ऐरे को टुकड़ों (chunks) में विभाजित करना होगा।


रिटर्न मान​

एक Promise लौटाता है जो SuiObjectResponse ऑब्जेक्ट्स की एक ऐरे में रिज़ॉल्व होता है।

ऐरे का क्रम अनुरोध में दिए गए ids के क्रम से बिल्कुल मेल खाता है:

प्रतिक्रिया
[
{
"data": { "objectId": "0xA...", "version": "1" }
},
{
"error": { "code": "notExists", "object_id": "0xB..." }
},
{
"data": { "objectId": "0xC...", "version": "5" }
}
]

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

NFT मेटाडेटा और Display विशेषताओं को थोक में प्राप्त करें​

ऑन-चेन फ़ील्ड और छवि URL प्रदर्शित करने के लिए NFT आईडी की सूची क्वेरी करें:

bulkFetch.js
const objectIds = ['0x123...', '0x456...', '0x789...'];

const results = await client.multiGetObjects({
ids: objectIds,
options: {
showContent: true,
showDisplay: true
}
});

// परिणामों को संसाधित करें
results.forEach((result) => {
if (result.data) {
console.log("आइटम मिला:", result.data.display?.data?.name);
} else {
console.warn("आइटम लोड करने में विफल रहा:", result.error);
}
});

बैचिंग सीमाओं के लिए बड़ी आईडी सूचियों को टुकड़ों में विभाजित करें​

चूंकि अधिकांश सार्वजनिक RPC नोड्स पर प्रति अनुरोध 50 आइटम की सीमा लागू होती है, बड़ी सूचियों के लिए चंकिंग हेल्पर का उपयोग करें:

chunking.js
import { chunk } from 'lodash'; // या आपका अपना हेल्पर

const allIds = [/* ... 200 आईडी की ऐरे ... */];
const CHUNK_SIZE = 50;
const chunks = chunk(allIds, CHUNK_SIZE);

for (const batch of chunks) {
const batchResults = await client.multiGetObjects({
ids: batch,
options: { showType: true }
});
// batchResults को संसाधित करें...
}

सर्वोत्तम प्रथाएँ​

प्रत्येक आइटम के लिए आंशिक विफलताओं को संभालें​

एक मानक डेटाबेस क्वेरी के विपरीत जो त्रुटि पर पूरे बैच को रोक सकती है, multiGetObjects प्रत्येक आईडी के लिए एक परिणाम लौटाता है। भले ही कोई एक ऑब्जेक्ट विफल हो जाए (उदाहरण के लिए, यदि किसी लेनदेन ने उसे हटा दिया हो), बैच के शेष आइटम फिर भी सफलतापूर्वक वापस आते हैं। लौटाई गई ऐरे में प्रत्येक आइटम के लिए हमेशा data बनाम error की जांच करें।

इंडेक्स-क्रम संरक्षण पर भरोसा करें​

SDK इनपुट ऐरे के इंडेक्स क्रम को संरक्षित करता है:

  • results[0] ids[0] के अनुरूप है
  • results[1] ids[1] के अनुरूप है

आप इस क्रम पर भरोसा कर सकते हैं ताकि परिणामों को सीधे आपके मूल डेटा स्रोत से मैप किया जा सके।


यह भी देखें​

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