एपीआई संदर्भ: multiGetObjects
एक ही नेटवर्क अनुरोध में कई ऑब्जेक्ट्स का विवरण प्राप्त करता है।
क्लास: SuiClient
विधि का प्रकार: रीड ऑपरेशन, कोई गैस नहीं
अवलोकन
multiGetObjects का उपयोग करना लूप में getObject को कॉल करने की तुलना में बहुत अधिक कुशल साबित होता है। यह कई क्वेरीज़ को एक ही रिमोट प्रोसीजर कॉल (RPC) में संयोजित करके नेटवर्क विलंबता को कम करता है।
सिग्नेचर
client.multiGetObjects(input: MultiGetObjectsParams): Promise<SuiObjectResponse[]>
पैरामीटर
यह मेथड निम्नलिखित प्रॉपर्टीज़ वाला एक कॉन्फ़िगरेशन ऑब्जेक्ट स्वीकार करता है:
| Parameter | Type | Required | Description |
|---|---|---|---|
ids | string[] | हाँ | 32-बाइट हेक्साडेसिमल ऑब्जेक्ट आईडी का एक ऐरे। |
options | SuiObjectDataOptions | नहीं | विशिष्ट डेटा फ़ील्ड को टॉगल करने के लिए कॉन्फ़िगरेशन फ़्लैग। सभी अनुरोधित ऑब्जेक्ट पर लागू होता है। |
अधिकांश सार्वजनिक RPC नोड्स प्रति अनुरोध आमतौर पर 50 आईडी की सीमा लागू करते हैं। बड़े बैचों के लिए, आपको अपनी ऐरे को टुकड़ों में विभाजित करना होगा।
रिटर्न मान
एक Promise लौटाता है जो SuiObjectResponse ऑब्जेक्ट्स की एक ऐरे में रिज़ॉल्व होता है।
ऐरे का क्रम अनुरोध में पास किए गए ids के क्रम से बिल्कुल मेल खाता है।
[
{
"data": { "objectId": "0xA...", "version": "1", ... }
},
{
"error": { "code": "notExists", "object_id": "0xB..." }
},
{
"data": { "objectId": "0xC...", "version": "5", ... }
}
]
उपयोग के उदाहरण
परिदृश्य A: मेटाडेटा को थोक में प्राप्त करना
कल्पना कीजिए कि आपके पास नॉन-फंजिबल टोकन (NFT) आईडी की एक सूची है और आपको उनके नाम प्रदर्शित करने हैं।
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);
}
});
परिदृश्य बी: चंकिंग द्वारा बड़ी सूचियों को संभालना
चूंकि प्रति अनुरोध, उदाहरण के लिए, 50 आइटम की सीमा लागू होती है, बड़ी सूचियों के लिए एक चंकिंग हेल्पर का उपयोग करें।
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 }
});
// बैचरिजल्ट्स को प्रोसेस करें...
}
सर्वोत्तम प्रथाएँ
1. हमेशा आंशिक विफलताओं को संभालें
एक मानक डेटाबेस क्वेरी के विपरीत जो त्रुटि पर पूरे बैच को रोक सकती है, multiGetObjects हर आईडी के लिए एक परिणाम लौटाता है। भले ही एक ऑब्जेक्ट विफल हो जाए (उदाहरण के लिए, उसे हटा दिया गया हो), बैच में बाकी ऑब्जेक्ट फिर भी सफलतापूर्वक लौट आते हैं। आपको लौटाए गए एरे में प्रत्येक आइटम के लिए data बनाम error की जाँच करनी चाहिए।
2. क्रम संरक्षण
SDK गारंटी देता है कि आउटपुट ऐरे, इनपुट ऐरे के इंडेक्स से मेल खाता है।
results[0]का मिलानids[0]से होता है।results[1]का मिलानids[1]से होता है।
आप परिणामों को अपने मूल डेटा स्रोत पर वापस मैप करने के लिए इस पर भरोसा कर सकते हैं।