एपीआई संदर्भ: getOwnedObjects
एक विशिष्ट पते के स्वामित्व वाले ऑब्जेक्ट्स की एक सूची प्राप्त करता है।
क्लास: SuiClient
विधि प्रकार: रीड ऑपरेशन, कोई गैस नहीं
अवलोकन
यह मेथड "इन्वेंटरी" या "वॉलेट" स्क्रीन को भरता है। क्योंकि एक पता हज़ारों ऑब्जेक्ट्स का मालिक हो सकता है, यह मेथड परिणामों को पेजिनेट करता है।
सिग्नेचर
client.getOwnedObjects(input: GetOwnedObjectsParams): Promise<PaginatedObjectsResponse>
पैरामीटर
| Parameter | Type | Required | Description |
|---|---|---|---|
owner | string | हाँ | जाँच किए जाने वाले वॉलेट का 32-बाइट पता। |
filter | SuiObjectDataFilter | नहीं | प्रकार या पैकेज द्वारा परिणाम फ़िल्टर करें, नीचे देखें। |
options | SuiObjectDataOptions | नहीं | विवरण शामिल करने के लिए फ़्लैग, उदाहरण के लिए, showType। |
cursor | string | नहीं | पेजिनेशन के लिए, पिछले प्रतिक्रिया से nextCursor। |
limit | number | नहीं | वापस करने के लिए अधिकतम आइटम, डिफ़ॉल्ट: 50। |
SuiObjectDataFilter
फ़िल्टर पैरामीटर शक्तिशाली फ़िल्टरिंग प्रदान करता. यह आपको उपयोगकर्ता की पूरी इन्वेंट्री डाउनलोड करने के बजाय "मुझे केवल कॉइन्स दिखाएँ" जैसे विशिष्ट प्रश्न पूछने देता है।
| Filter Key | Value Type | Description |
|---|---|---|
MatchAll | Filter[] | लॉजिकल AND। ऑब्जेक्ट को सभी प्रदान किए गए फ़िल्टर से मेल खाना चाहिए। |
MatchAny | Filter[] | लॉजिकल OR। ऑब्जेक्ट किसी भी दिए गए फ़िल्टर से मेल खा सकता है। |
StructType | string | Move Struct प्रकार के लिए सटीक मिलान, उदाहरण के लिए, 0x2::sui::SUI। |
Package | string | किसी विशिष्ट पैकेज आईडी में परिभाषित किसी भी ऑब्जेक्ट से मेल खाता है। |
रिटर्न वैल्यू
एक PaginatedObjectsResponse लौटाता है।
{
"data": [
{ "data": { "objectId": "0xA...", "type": "..." } },
{ "data": { "objectId": "0xB...", "type": "..." } }
],
"hasNextPage": true,
"nextCursor": "0x12345...ResultCursor"
}
data: यह ऐरे इस पेज के ऑब्जेक्ट्स को रखता है।hasNextPage:trueयदि प्राप्त करने के लिए और ऑब्जेक्ट हैं।nextCursor: वह स्ट्रिंग जिसे आपको अगले पेज को प्राप्त करने के लिए अपने अगले कॉल मेंcursorपैरामीटर को पास करना होगा।
उपयोग के उदाहरण
परिदृश्य A: बुनियादी इन्वेंटरी फ़ेच, पहला पेज
किसी पते के स्वामित्व वाले पहले 5 ऑब्जेक्ट प्राप्त करें।
const response = await client.getOwnedObjects({
owner: '0xMyAddress...',
limit: 5,
options: { showType: true }
});
response.data.forEach(item => {
console.log(`ID: ${item.data.objectId}, Type: ${item.data.type}`);
});
परिदृश्य B: विशिष्ट संपत्तियों के लिए फ़िल्टरिंग
किसी उपयोगकर्ता के स्वामित्व वाले केवल "Sui DevNet Non-Fungible Tokens" प्राप्त करें, उनके कॉइन और अन्य आइटमों को अनदेखा करते हुए।
const response = await client.getOwnedObjects({
owner: '0xMyAddress...',
filter: {
StructType: '0x2::devnet_nft::DevNetNFT'
},
options: { showContent: true }
});
परिदृश्य C: पूर्ण पेजिनेशन, सभी प्राप्त करना
किसी खाते के स्वामित्व वाले प्रत्येक ऑब्जेक्ट को पेज-दर-पेज प्राप्त करने के लिए एक while लूप का उपयोग करें।
let hasNextPage = true;
let nextCursor = null;
const allObjects = [];
while (hasNextPage) {
const response = await client.getOwnedObjects({
owner: '0xMyAddress...',
cursor: nextCursor
});
allObjects.push(...response.data);
hasNextPage = response.hasNextPage;
nextCursor = response.nextCursor;
}
console.log(`कुल ऑब्जेक्ट प्राप्त हुए: ${allObjects.length}`);
सामान्य त्रुटियाँ
| Error Code | Cause | Resolution |
|---|---|---|
cursor_invalid | cursor को दी गई स्ट्रिंग मान्य नहीं है या किसी अलग क्वेरी से है। | सुनिश्चित करें कि आप पिछली कॉल से nextCursor में लौटाई गई सटीक स्ट्रिंग ही पास करें। |
limit_exceeded | यदि आप नोड द्वारा अनुमत सीमा से अधिक की अनुरोध करते हैं, उदाहरण के लिए, 1000। | अपनी सीमा कम करें। मानक अधिकतम आमतौर पर 50 होता है। |
यह भी देखें
getObject: इसकी आईडी (ID) द्वारा एक ऑब्जेक्ट प्राप्त करें।multiGetObjects: एक ही अनुरोध में उनकी आईडी (IDs) द्वारा कई ऑब्जेक्ट प्राप्त करें।