n8n Loop Over Items: Batching ve Otomatik Döngü
n8n'in items'ları otomatik olarak nasıl döngüye aldığı, Loop Over Items node'unun nasıl çalıştığı ve performans ile rate limit için hangi batch boyutunun uygun olduğu.
n8n'deki en büyük öğrenme engeli açıklanıyor: Items, $json ve $node ne anlama gelir ve değerleri Drag-and-Drop ile kod olmadan nasıl eşleştirirsiniz.
n8n'de ilk kez bir Workflow oluşturan biri, er ya da geç sabit bir UI ayarının artık yeterli olmadığı bir noktaya gelir: Bir değerin önceki Node'dan gelmesi, giriş verilerine göre değişmesi ya da Workflow'un çok daha başında yer alan bambaşka bir düğümden kaynaklanması gerekir. Birçok yeni kullanıcı için en büyük öğrenme engeli tam da burada başlar, çünkü aniden $json, $node ve items gibi kavramlar ortaya çıkar ve açıklama olmadan şifreli bir kod gibi görünür. Oysa bunun arkasında, n8n'in verileri düğümler arasında nasıl aktardığı bir kez anlaşıldığında oldukça basit bir ilke yatar.
Bu yazı, somut örneklerle bir Item'ın n8n'de gerçekte ne olduğunu, $json ile $node'un nasıl ilişkili olduğunu ve değerleri tek bir satır kod yazmadan Drag-and-Drop ile nasıl eşleştireceğinizi açıklar. Temel olarak, Expression'lar ve dahili veri yapısına ilişkin resmi n8n dokümantasyonu, Temmuz 2026 itibarıyla kullanılmıştır.
n8n, verileri düğümler arasında her zaman nesnelerden oluşan bir Array olarak aktarır ve bu Array'deki her bir öğe Item olarak adlandırılır. veri yapısına ilişkin n8n dokümantasyonuna göre her Item, sabit `{ json: {...} }` biçimine sahiptir; asıl yük verileri her zaman json anahtarının altında bulunur. İki Item içeren bir örnek şöyle görünür:
Anlamak için önemli olan nokta: n8n'deki bir Node kural olarak her Item'ı tek tek işler ve yapılandırılmış eylemini Array'deki her öğe için tekrarlar. Bir HTTP-Request-Node iki Item aldığında, varsayılan olarak iki istek gönderir, her Item için bir tane. Bunu bir kez içselleştiren biri, n8n'deki Expression'ların neden her zaman o an işlenen Item'a atıfta bulunduğunu, tüm listeye değil, anlar.
$json, n8n Expression'larında en sık kullanılan değişkendir ve geçerli düğümün o an işlediği Item'ın json verilerini temsil eder. Burada $json, geçerli düğümün Input-Item'ı olan $input.item.json'un kısa biçimidir. Örneğin bir sonraki düğümde yukarıdaki örnekteki adı çıktı olarak vermek isterseniz, bir metin alanına şunu yazarsınız:
`{{ $json.name }}`
n8n, bu ifadeyi çalışma sırasında ilgili Item'ın gerçek değeriyle değiştirir; iki Item durumunda bir kez "Anna", bir kez de "Jonas" olur. İç içe geçmiş alanlara, veriler buna uygun yapılandırılmışsa, nokta gösterimiyle ulaşırsınız, örneğin `{{ $json.adresse.plz }}`.
Bir değerin doğrudan önceki düğümden değil de Workflow'un daha başında yer alan herhangi bir başka düğümden gelmesi gerektiği anda, $json artık yeterli olmaz. Tam da bunun için $node ve onun ardılı $() vardır. Eski Workflow'larda ve öğreticilerde sıklıkla hâlâ `$node["Node-Name"].json.feld` yazımıyla karşılaşırsınız; bu sözdizimi artık eskimiş sayılır. Güncel, önceki düğümleri referanslamaya ilişkin n8n dokümantasyonunda açıklanan biçim şöyledir:
`{{ $('Node-Name').item.json.feld }}`
Yalnızca o an bağlı olan Item'ı değil de belirli bir düğümün özellikle ilk, son veya tüm Items'ını almak isterseniz, ek olarak `$('Node-Name').first()`, `$('Node-Name').last()` ve `$('Node-Name').all()` size sunulur. Bir Workflow'da $node ile yazılmış eski bir ifadeyle karşılaşırsanız, gelecekteki n8n güncellemelerinden sonra da güvenilir biçimde çalışması için onu fırsat buldukça $() yazımına geçirmeniz yerinde olur.
Diyelim ki bir Workflow, diğer verilerin yanı sıra bir e-posta adresi de toplayan "Kontaktformular" adlı bir form düğümüyle başlıyor. Üç düğüm sonra, bir CRM'e giden bir HTTP-Request isteğinde, aradaki düğümler artık hiç e-posta verisi içermese bile tam olarak bu adrese yeniden ihtiyacınız olur. Bunun için kullanılan ifade şöyledir:
`{{ $('Kontaktformular').item.json.email }}`
Böylece, aradaki düğümlerin verilerle ne yaptığından bağımsız olarak, doğrudan Kontaktformular'dan gelen özgün Item'a erişirsiniz.
Expression'lara en rahat giriş, hiç de kod yazmaktan geçmez. n8n, bir düğümün Input-Panel'inde gelen verileri liste veya tablo olarak gösterir ve her bir alanı fareyle doğrudan bir parametre alanına sürükleyebilirsiniz. n8n bundan uygun ifadeyi otomatik olarak oluşturur, örneğin `{{ $json.fruit }}`, üstelik sözdizimini kendiniz bilmenize gerek kalmadan. Expression'ları veri dönüştürme düğümleriyle karşılaştıran n8n dokümantasyonuna göre bu yöntem, özellikle önceki verilerden yalnızca tek bir değeri devralmak istediğinizde işe yarar, çünkü n8n çalışma sırasında hangi somut değerin yerleştirileceğini doğrudan önizlemede gösterir. Sıralama, birleştirme veya yinelenenleri kaldırma gibi işlemler için ise dokümantasyon, hazır veri dönüştürme düğümlerini önerir, çünkü bunlar hiçbir Expression gerektirmez ve yönlendirmeli bir arayüz üzerinden kullanılır.
Bu dört noktayı bir kez içselleştiren biri, n8n'deki en büyük başlangıç engelini aşmış olur ve o andan itibaren, geliştirici geçmişi olmasa bile kendi Workflow'ları üzerindeki denetimi elinde tutar. Daha karmaşık otomasyonları kurarken yine de deneyimli bir desteğe güvenmeyi tercih edenler, NordFlux'un n8n otomasyonunda sabit fiyatlı ve Alman veri egemenliğine sahip bir uygulama bulur.
$json, $input.item.json'un kısa biçimidir ve doğrudan geçerli Item'ın json verilerini verir. $input.item ise olası bir binary anahtarı da dahil olmak üzere Item nesnesinin tamamını verir; bu nedenle yalnızca normal alan değerlerine erişmek istediğinizde $json, uygulamada neredeyse her zaman daha kısa ve daha yaygın yoldur.
$node["Name"].json, belirli bir düğümden veri referanslamak için kullanılan özgün sözdizimiydi, ancak artık eskimiş sayılıyor. n8n bunun yerine, yeniden adlandırmalar ve gelecekteki sürüm değişiklikleriyle daha kararlı biçimde başa çıkan $('Name') yazımını önerir. $node içeren eski Workflow'lar çoğunlukla çalışmaya devam eder, ancak ilk fırsatta güncellenmelidir.
Hayır, $json her zaman yalnızca geçerli düğümdeki doğrudan gelen veri akışının Item'ına atıfta bulunur. Daha başta yer alan herhangi bir başka düğümdeki alanlar için, önceki düğümleri referanslamaya ilişkin dokümantasyonda açıklandığı gibi, $('Node-Name').item.json.feldname yazımına ihtiyacınız vardır.
Hayır, çoğunlukla gerekmez. Alanları Input-Panel'den doğrudan Drag-and-Drop ile bir parametre alanına sürükleyebilirsiniz, n8n uygun ifadeyi otomatik olarak oluşturur. Elle yazmak özellikle, daha uzaktaki bir düğümden gelen verilere erişmek ya da değerleri ek olarak .toUpperCase() veya .map() gibi yöntemlerle işlemek istediğinizde işe yarar.
O zaman Expression, bir hata yerine çoğunlukla undefined veya boş bir değer döndürür; ancak kendisi var olmayan iç içe geçmiş bir nesnenin alanına erişiyorsanız durum farklıdır. Bu gibi durumlarda, çalışmayı yarıda kestirmek yerine otomatik olarak bir varsayılan değer yerleştirmek için Expression referansındaki $ifEmpty() işlevi yardımcı olur.
NordFlux, kuruluşlar için dijital çalışanlar kurar: tekrar eden işleri üstlenen otomasyonlar ve KI ajanları. Kontrol sizde kalır.
n8n'in items'ları otomatik olarak nasıl döngüye aldığı, Loop Over Items node'unun nasıl çalıştığı ve performans ile rate limit için hangi batch boyutunun uygun olduğu.
n8n webhooklarını doğru şekilde kurmak ve güvenlik altına almak: Header Auth, JWT, IP beyaz listesi ve reverse proxy yapılandırması bir bakışta.
n8n Task Runners, Code node'larını ana süreç yerine izole şekilde çalıştırır. İşte iç ve dış mod nasıl çalışır.
$json, $node ve items arasında net bir ayrım yapmayanlar, bir sonraki veri değişikliğinde beklenmedik şekilde bozulan workflow'lar inşa eder. NordFlux, n8n otomasyonlarınızı sağlam ve izlenebilir expression'larla geliştirir ve ekibinizi bunları güvenle kullanmak üzere eğitir. İlk görüşmede ekibinizin mevcut seviyesini konuşuruz.