مرجع واجهة برمجة التطبيقات: getObject
يسترد التفاصيل والبيانات الوصفية الموجودة على السلسلة لكائن Sui فردي من خلال معرف الكائن (Object ID) السداسي العشري المكون من 32 بايت.
استخدم هذه الطريقة للاستعلام عن تعريفات حزم Move، وفحص حقول البنية (struct)، والتحقق من ملكية الكائنات. يمكنك أيضًا التحقق مما إذا كانت معاملة ما قد عدلت كائنًا أو حذفته. ونظرًا لأن getObject هي عملية قراءة تُقدم مباشرةً من الحالة المحلية للعقدة الكاملة (fullnode)، فإنها تُنفذ على الفور دون إرسال معاملة أو استهلاك غاز.
- الفئة:
SuiClient - الحزمة:
@mysten/sui/client - نوع العملية: عملية قراءة (بدون رسوم غاز، وبدون توقيع محفظة)
التوقيع
client.getObject(input: GetObjectParams): Promise<SuiObjectResponse>
المعلمات
تقبل هذه الطريقة كائن تكوين واحد يحتوي على الخصائص التالية:
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
id | string | نعم | معرف الكائن (Object ID) السداسي العشري المكون من 32 بايت، على سبيل المثال 0x123.... |
options | SuiObjectDataOptions | لا | علامات التكوين لتبديل حقول بيانات محددة في الاستجابة. القيمة الافتراضية لجميع الحقول هي false. |
SuiObjectDataOptions
بشكل افتراضي، لا تُرجع دالة getObject سوى مرجع الكائن، وتحديدًا معرّفه وإصداره وملخصه. لاسترداد البيانات الفعلية، يجب عليك تعيين هذه العلامات صراحةً على true.
| الخيار | الوصف |
|---|---|
showType | تُرجع نوع Move، على سبيل المثال 0x2::coin::Coin<0x2::sui::SUI>. |
showContent | تُرجع حقول بيانات Move التي تم تحليلها، والتي تمثل الحالة الداخلية للكائن. |
showOwner | تُرجع العنوان أو الكائن الذي يمتلك هذا العنصر. |
showDisplay | تُرجع البيانات الوصفية القياسية للعرض Display (الأسماء، الأوصاف، عناوين URL للصور) لواجهة المستخدم. |
showStorageRebate | تُرجع خصم التخزين المرتبط بالكائن. |
showBcs | تُرجع بايتات BCS (التسلسل الثنائي القياسي) الخام لفك التشفير من جانب العميل. |
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 الوصفية وحقول العرض
يطلب هذا الطلب content لقراءة الحقول على السلسلة و 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: يسرد جميع الكائنات المملوكة لعنوان معين.- كيفية جلب بيانات الكائنات: يوفر دليلاً تفصيلياً لتنفيذ
getObjectفي برنامج نصي بلغة Node.js. - بنية SuiClient: يشرح التصميم المفاهيمي لـ
SuiClientوعمليات القراءة.