n8n'de Expression Syntax ({{ }}) Node'lar Arası Veriyi Nasıl Taşır?
n8n, düşük kodlu bir otomasyon aracı olarak farklı uygulamalar arasında iş akışları oluşturmanıza olanak tanır. Her bir iş adımı bir node ile temsil edilir ve bu node'lar birbirine bağlanarak bir pipeline oluşturur. Peki, bir node'un çıktısı bir sonraki node'da nasıl kullanılır? İşte bu noktada devreye expression syntax ({{ }}) girer. Bu yazıda, n8n'de bu mekanizmanın perde arkasındaki mantığını, kod yazmadan, adım adım açıklayacağız.
Expression Syntax Nedir ve Neden Gereklidir?
n8n'de her node, kendisine gelen veriyi işler ve bir çıktı üretir. Örneğin bir HTTP Request node'u bir API'den veri çeker, bir sonraki node ise bu veriyi e-posta olarak göndermek ister. İşte bu veri alışverişi için expression syntax kullanılır. Çift süslü parantezler ({{ }}) içine yazılan ifadeler, çalışma anında değerlendirilir ve ilgili node'un çıktısına erişmenizi sağlar. Bu sayede, bir önceki node'dan gelen veriyi dinamik olarak referans alabilirsiniz.
$json: Mevcut Node'un Girdi Verisi
Her node için, o node'a gelen veri $json değişkeni ile temsil edilir. Örneğin bir Webhook node'u, gelen isteğin body'sini $json olarak tutar. Eğer bir sonraki node'da bu veriye erişmek isterseniz, doğrudan {{ $json.fieldName }} yazabilirsiniz. Ancak bu, yalnızca o node'a gelen en son veriyi gösterir. Peki ya birkaç adım önceki bir node'un çıktısına ihtiyacınız varsa? İşte burada $node devreye girer.
$node: Herhangi Bir Node'un Çıktısına Erişim
n8n'de $node değişkeni, iş akışındaki herhangi bir node'a ismiyle referans vermenizi sağlar. Örneğin {{ $node["API Cevabı"].data }} ifadesi, “API Cevabı” adlı node'un çıktısındaki “data” alanını getirir. Bu syntax sayesinde, node'lar arasında karmaşık veri akışları kurabilirsiniz. Ayrıca $node ile birlikte .json veya .binary gibi alt özellikler de kullanılabilir. Bu mekanizma, aynı veri kümesini farklı node'larda tekrar tekrar işlemenize olanak tanır.
Örnek Bir Senaryo: Veri Toplama ve İşleme
Diyelim ki bir Webhook node'u müşteri bilgilerini alıyor, ardından bir “Filtrele” node'u belirli şartları sağlayan kayıtları seçiyor ve son olarak bir “Google Sheets” node'u bu kayıtları tabloya yazıyor. Bu senaryoda, Filtrele node'u Webhook'tan gelen tüm veriyi $json olarak alır. Filtreleme sonucu sadece eşleşenleri çıktı olarak verir. Google Sheets node'u ise {{ $node["Filtrele"].json }} ile Filtrele node'unun çıktısına erişir. Bu sayede her node, kendine özgü bir dönüşüm yaparken veriyi referans alabilir.
Expression Değerlendirme Zamanı ve Sırası
Expression'lar iş akışı çalıştırıldığında, node sırasına göre değerlendirilir. Bir node çalıştırılmadan önce, içindeki tüm expression'lar hesaplanır. Bu hesaplama sırasında referans alınan node'ların daha önce çalıştırılmış olması gerekir. Aksi takdirde hata alırsınız. Bu nedenle node'ları mantıklı bir sırayla bağlamak ve gerekirse Wait gibi node'larla sıralamayı kontrol etmek önemlidir.
Yaygın Kullanım Alanları ve İpuçları
- Alan Eşleme: Bir API'den gelen “first_name” alanını, başka bir sistemde “firstName” olarak eşlerken
{{ $json["first_name"] }}kullanabilirsiniz. - Koşullu İşlemler: IF node'unda bir önceki node'un belirli bir alanının değerine göre yol ayrımı yapabilirsiniz.
- Dinamik URL'ler: HTTP Request node'larında URL'nin bir kısmını önceki node'dan gelen veriyle oluşturabilirsiniz:
https://api.example.com/{{ $node["Kullanıcı ID"].json.id }}
İpuçlarına gelince: Node'larınıza anlamlı isimler vermek, $node kullanımını kolaylaştırır. Ayrıca expression'ları yazarken n8n'in görsel düzenleyicisi size otomatik tamamlama sunar — boş bir {{ }} içinde bekleyip çıkan listeden seçim yapabilirsiniz.
Sık Karşılaşılan Hatalar ve Çözümleri
En yaygın hata, referans verilen node'un henüz çalıştırılmamış olması veya isminin yanlış yazılmasıdır. Bir diğer hata ise $json ile $node karıştırmaktır. Unutmayın: $json bulunduğunuz node'a gelen en son veriyi, $node["NodeAdi"].json ise belirli bir node'un tüm çıktısını verir. Ayrıca, eğer bir node birden fazla çıktı üretiyorsa (örneğin IF node'unun true/false dalları), $node["NodeAdi"].json yalnızca ana çıktıyı döndürür. Diğer dallara erişmek için özel syntax gerekebilir.
Sonuç
n8n'de expression syntax ({{ }}), node'lar arasında veri akışını sağlayan temel yapıdır. $json ve $node kullanımını anladığınızda, karmaşık otomasyonları rahatlıkla kurabilirsiniz. Bu mekanizma sayesinde her node, kendine özgü bir işlem yaparken diğer node'lardan gelen veriyi dinamik olarak kullanabilir. Artık kendi iş akışlarınızı oluştururken bu prensipleri uygulayabilir, daha verimli ve hatasız otomasyonlar geliştirebilirsiniz.
Sık Sorulan Sorular
$json ile $node arasındaki temel fark nedir?
$json bulunduğunuz node'a gelen en son veriyi temsil ederken, $node belirli bir node'a adıyla referans vererek o node'un çıktısına erişmenizi sağlar.
Bir node'a referans verirken ismini yanlış yazarsam ne olur?
Expression çalışma anında değerlendirilir ve hata alırsınız. Bu yüzden node isimlerini doğru yazmaya ve boşluklara dikkat etmek önemlidir.
Expression syntax ile bir node'un ikinci çıktısına nasıl erişirim?
Genellikle $node["NodeAdi"].json ana çıktıyı döndürür. İkinci çıktıya erişmek için $node["NodeAdi"].outputIndex gibi özel alanlar kullanmanız gerekir; n8n dokümantasyonunda ilgili node'un çıktı yapısını kontrol edin.
Expression içinde bir dizi üzerinde döngü yapabilir miyim?
Evet, n8n expression'ları JavaScript benzeri bir yapıya sahiptir. Örneğin {{ $json.items.forEach(...) }} gibi döngüler kullanabilirsiniz, ancak daha karmaşık durumlarda Function node kullanmak daha uygun olabilir.
Kliniğiniz için Buyo'yu deneyin
WhatsApp, telefon ve web sitenizde 7/24 çalışan AI randevu asistanı. Tek seferlik kurulum + işletmenize özel aylık abonelik, taahhüt yok.