पाठ 9 / 25

Code Node

दोनों run modes में Code node में JavaScript लिखें और items सही आकार में लौटाएँ।

दो modes

Code node JavaScript (या Python) चलाता है। Run Once for All Items mode में आप $input.all() से हर item पढ़ते हैं और { json: {...} } की array लौटानी होती है। Run Once for Each Item mode में आप $input.item पढ़ते हैं और एक { json: {...} } लौटाते हैं। Dedupe, sorting और aggregation के लिए all-items mode और सरल प्रति-record बदलावों के लिए each-item mode चुनें।

Normalise और dedupe (all items)

मैंने यह तर्क नमूना items के साथ Node.js में चलाया। दो input rows में एक ही email था, इसलिए एक हट गई, और अंक न होने वाला amount "abc" NaN बनता है, जिसे JSON null छापता है।

const seen = new Set();
const out = [];
for (const item of $input.all()) {
  const email = item.json.email.trim().toLowerCase();
  if (seen.has(email)) continue;          // drop duplicates
  seen.add(email);
  out.push({ json: {
    name: item.json.name.trim(),
    email,
    amount: Number(item.json.amount),
  }});
}
return out;

Output:

[{"json":{"name":"Asha","email":"asha@example.com","amount":1200}},
 {"json":{"name":"Ravi","email":"ravi@example.com","amount":null}}]

आगे बढ़ने से पहले जाँचें

जिन rows का amount परिमित संख्या नहीं उन्हें छानने से ग़लत डेटा अगले system से बाहर रहता है। उसी नमूने पर 1 row मान्य है और 1 अस्वीकृत।

const valid = out.filter(i => Number.isFinite(i.json.amount));
const invalid = out.length - valid.length;
return valid;   // log or route the invalid ones elsewhere

Output:

1 valid, 1 invalid

सही आकार लौटाएँ

{ json: ... } items की जगह सादे objects लौटाना Code node की सबसे आम ग़लती है। कुछ ग़लत लगे तो node का output tab देखें और error संदेश पढ़ें; वह अपेक्षित आकार का नाम बताता है।

त्वरित जाँच: "All items" mode में Code node को क्या लौटाना चाहिए?

  • सादा string
  • कुछ नहीं
  • json property वाले objects की array
  • एक संख्या
Answer

json property वाले objects की array — n8n को items { json: {...} } रूप में, array के तौर पर चाहिए।