تعبيرات غير محددة

لماذا يعيد تعبيري undefined على الرغم من وجود الحقل

وصف المشكلة/الخطأ/السؤال

ما هي رسالة الخطأ (إن وجدت)؟

يرجى مشاركة سير العمل الخاص بك

(حدد العقد على لوحتك واستخدم اختصارات لوحة المفاتيح CMD+C/CTRL+C و CMD+V/CTRL+V لنسخ ولصق سير العمل.)

شارك المخرجات المُرجعة من قبل آخر عقدة

معلومات حول إعداد n8n الخاص بك

  • إصدار n8n:
  • قاعدة البيانات (الافتراضي: SQLite):
  • إعداد n8n EXECUTIONS_PROCESS (الافتراضي: own, main):
  • تشغيل n8n عبر (Docker, npm, n8n cloud, تطبيق سطح المكتب):
  • نظام التشغيل:

@Oscar_Abaleke في تسعة من كل عشر مرات، المشكلة تكون في عدم تطابق مسار التعبير مع شكل JSON الفعلي، الترميز النقطي مثل {{ $json.field }} يصل فقط إلى الطفل المتداخل الفعلي، لذا إذا كان المفتاح يحتوي على مسافة أو نقطة في الاسم نفسه فإنه يرجع undefined وتحتاج إلى ترميز القوس بالمفتاح الدقيق، {{ $json[‘your field’] }}. الحالة الشائعة الأخرى هي أن الحقل يوجد فعلاً على عقدة سابقة وليس على المدخل المباشر، لذا $json يشير إلى الخطوة الخاطئة. هل يمكنك لصق التعبير الدقيق الذي تستخدمه وصورة من لوحة المدخل لتلك العقدة حتى أتمكن من رؤية المفتاح الفعلي؟

مرحباً @Oscar_Abaleke

السبب الرئيسي هو أن الحقل ربما تم حذفه أو تعديله بواسطة عقدة Set أو Edit Fields أو Code سابقة.

تحقق من مخرجات البيانات للعقدة السابقة، وتأكد مما إذا كان خيار “Keep Only Set Fields” مفعّلاً وتأكد دائماً من أن مسار JSON الدقيق يتم الإشارة إليه

إذا كان التعبير صحيحاً، فاستخدم first().json بدلاً من item.json لاسم العقدة

شيء واحد آخر يجب التحقق منه: إذا كان الحقل موجودًا في عقدة غير متصلة مباشرة بالعقدة الحالية في السلسلة، فإن $json.fieldName أو $item().json.fieldName الافتراضي لن يصل إليها. ستحتاج إلى $('Node Name').item.json.fieldName لسحب البيانات من عقدة معينة في الاتجاه الصعودي حسب الاسم.

أيضًا - إذا كان معاينة التعبير في المحرر تعرض undefined لكن سير العمل يعمل بشكل صحيح (أو يعرض قيمة في مخرجات التنفيذ)، فهذا عادةً يعني أن المحرر يستخدم بيانات من تشغيل قديم. أعد تشغيل العقدة في الاتجاه الصعودي يدويًا بحيث يكون لدى المحرر بيانات طازجة للتقييم عليها.