
🧑🎓 Master Data Access Techniques with Progressive Expression Challenges
Description
Categories
🔧 Engineering
Nodes Used
n8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.setn8n-nodes-base.setn8n-nodes-base.setn8n-nodes-base.set
PriceGratis
Views0
Last Updated11/28/2025
workflow.json
{
"meta": {
"creator": "Lucas Peyrin",
"instanceId": "e409ea34548a2afe2dffba31130cd1cf2e98ebe2afaeed2a63caf2a0582d1da0",
"fingerprint": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjcmVhdG9yIjoiIiwiaXNzIjoibjhuIiwiaWF0IjoxNzUzMTEwMjM2fQ.t3z4zUz-Pb_rTMjOtIYZmw6lxa8lkLZQXrrdDdkADNo"
},
"nodes": [
{
"id": "c769722e-d2f2-42cf-9bc2-b13018b93b8a",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
-400,
-112
],
"parameters": {
"width": 460,
"height": 552,
"content": "## Expressions Knowledge Test\n\nWelcome to the practical test for n8n Expressions! The goal is to use expressions to pull specific data from the **\"Source Data\"** node.\n\n**How to use this test:**\n1. For each step, read the instructions on the purple sticky note.\n2. Modify the corresponding **\"Test - ...\"** node by writing the correct expression in the value field.\n3. Click **\"Execute Workflow\"** to check your answers.\n4. A green path means a correct answer, a red path means it's incorrect. Keep trying until the path turns green!\n\n\nGood luck!"
},
"typeVersion": 1
},
{
"id": "1881550a-caa1-4e9d-9399-153356d89eb0",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Start Test!",
"type": "n8n-nodes-base.manualTrigger",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
-144,
240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7af9ab86-755f-4ed5-89f3-2f945f19d5f3",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Source Data",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
176,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "12345",
"name": "name",
"type": "string",
"value": "Clark Kent"
},
{
"id": "67890",
"name": "city",
"type": "string",
"value": "Metropolis"
},
{
"id": "abcde",
"name": "level",
"type": "number",
"value": 99
},
{
"id": "fghij",
"name": "tools",
"type": "array",
"value": "[\"Typewriter\",\"Glasses\",\"n8n\"]"
},
{
"id": "klmno",
"name": "address",
"type": "object",
"value": "{\"street\":\"123 Main St\",\"zip\":\"10001\"}"
},
{
"id": "pqrst",
"name": "tasks",
"type": "array",
"value": "[{\"name\":\"Write Article\",\"status\":\"Done\"},{\"name\":\"Review PR\",\"status\":\"Pending\"},{\"name\":\"Save the World\",\"status\":\"Pending\"}]"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "04defff0-a2b6-4a05-8de4-160fc2857545",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Instruction - Basic Access",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
400,
16
],
"parameters": {
"color": 6,
"width": 300,
"height": 428,
"content": "### Step 1: Basic Access\n\nModify the **\"Test - Basic Access\"** node.\n\n**Task:** Create a new field named `user_city`. Its value should be an expression that gets the `city` from the **\"Source Data\"** node."
},
"typeVersion": 1
},
{
"id": "53f27214-cdef-45be-ad71-c60f96c0f7f0",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Test - Basic Access",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
496,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "user_city",
"type": "string",
"value": "="
}
]
}
},
"typeVersion": 3.4
},
{
"id": "fd464cfd-3ff0-4f64-90bb-dd086a2e7b2c",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Check - Basic Access",
"type": "n8n-nodes-base.if",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
752,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5ac1af5c-2769-42f8-9df7-ec092d2fec05",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.user_city }}",
"rightValue": "={{ $('Source Data').last().json.city }}"
},
{
"id": "d4f115a2-6713-4beb-8b4e-4371686ca6ea",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$('Test - Basic Access').isExecuted || $('Test - Basic Access').params.assignments.assignments[0].value.includes('.city') }}",
"rightValue": "{{ $json.city }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "7df3c072-a908-498e-9034-13a7e03a4703",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Success - Basic Access",
"type": "n8n-nodes-base.noOp",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
992,
128
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6e087d88-3c5d-454e-81ac-5aec12514edb",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Error - Basic Access",
"type": "n8n-nodes-base.stopAndError",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
992,
448
],
"parameters": {
"errorMessage": "Incorrect. Hint: Use the format `{{ $('Source Data').item.json.city }}` to get the city value."
},
"typeVersion": 1
},
{
"id": "fa74e360-5b85-4fe0-9c65-547a5d788642",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Instruction - Array Access",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1216,
16
],
"parameters": {
"color": 6,
"width": 300,
"height": 428,
"content": "### Step 2: Array Access\n\nModify the **\"Test - Array Access\"** node.\n\n**Task:** Create a field `third_tool`. Its value should be an expression that gets the *third* item from the `tools` array."
},
"typeVersion": 1
},
{
"id": "33fc1900-e793-4c4f-8d66-849be1ebee89",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Test - Array Access",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1312,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "third_tool",
"type": "string",
"value": "="
}
]
}
},
"typeVersion": 3.4
},
{
"id": "59622f54-9685-4115-bad0-3dcde79b0e76",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Check - Array Access",
"type": "n8n-nodes-base.if",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1568,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5ac1af5c-2769-42f8-9df7-ec092d2fec05",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.third_tool }}",
"rightValue": "={{ $('Source Data').item.json.tools[2] }}"
},
{
"id": "193a01cb-64c3-456a-bee4-4febaae63e66",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$('Test - Array Access').isExecuted || $('Test - Array Access').params.assignments.assignments[0].value.includes('.tools') }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "516d40d3-3ec9-42ff-993e-0965695d1c63",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Success - Array Access",
"type": "n8n-nodes-base.noOp",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1808,
128
],
"parameters": {},
"typeVersion": 1
},
{
"id": "823aa93b-3e0c-4bb4-a3fd-5d960c14d8b4",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Error - Array Access",
"type": "n8n-nodes-base.stopAndError",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1808,
448
],
"parameters": {
"errorMessage": "Incorrect. Hint: Remember that arrays are zero-indexed. The third item is at index `[2]`."
},
"typeVersion": 1
},
{
"id": "5c7f181c-3ebd-41e7-8012-bf26a7e724b6",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Instruction - Nested Object",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2032,
16
],
"parameters": {
"color": 6,
"width": 300,
"height": 428,
"content": "### Step 3: Nested Object\n\nModify the **\"Test - Nested Object\"** node.\n\n**Task:** Create a field `street_address`. Its value should be an expression that gets the `street` from inside the `address` object."
},
"typeVersion": 1
},
{
"id": "6c8d3b1d-4e67-4bf7-9d52-7c37c2a52ec3",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Test - Nested Object",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2128,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "street_address",
"type": "string",
"value": "="
}
]
}
},
"typeVersion": 3.4
},
{
"id": "188028b2-01df-46ed-9977-ef9dcb6cb9ae",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Check - Nested Object",
"type": "n8n-nodes-base.if",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2384,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d4e5f6a7-8901-2345-6789-0abcdef12345",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.street_address }}",
"rightValue": "={{ $('Source Data').item.json.address.street }}"
},
{
"id": "b84f01c8-0b9f-4dd5-a983-e7455fafe1ce",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$('Test - Nested Object').isExecuted || $('Test - Nested Object').params.assignments.assignments[0].value.includes('.address.street') }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ebe135cb-b246-4868-ad97-6bf20c43f3e0",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Success - Nested Object",
"type": "n8n-nodes-base.noOp",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2624,
128
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d1312875-9ecc-48db-81aa-14b189e4bd9c",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Error - Nested Object",
"type": "n8n-nodes-base.stopAndError",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2624,
448
],
"parameters": {
"errorMessage": "Incorrect. Hint: Chain the keys using dots, like `...json.address.street`."
},
"typeVersion": 1
},
{
"id": "946cf25f-706d-4d05-aeaa-028e3a229856",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Instruction - Array of Objects",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2848,
16
],
"parameters": {
"color": 6,
"width": 300,
"height": 428,
"content": "### Step 4: Array of Objects\n\nModify the **\"Test - Array of Objects\"** node.\n\n**Task:** Create a field `second_task_name`. Its value should be an expression that gets the `name` of the *second* object in the `tasks` array."
},
"typeVersion": 1
},
{
"id": "de975fc2-c145-4d5c-8426-03e5ce702846",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Test - Array of Objects",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2944,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "second_task_name",
"type": "string",
"value": "="
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0ab0b02e-60a3-4d7f-83d0-6516b479e08d",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Check - Array of Objects",
"type": "n8n-nodes-base.if",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3200,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e1234567-890a-bcde-f123-456789012345",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.second_task_name }}",
"rightValue": "={{ $('Source Data').item.json.tasks[1].name }}"
},
{
"id": "8ea84d9f-102e-44aa-b87d-96fc413af915",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$('Test - Array of Objects').isExecuted || $('Test - Array of Objects').params.assignments.assignments[0].value.includes('.tasks') }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "5db2abba-a971-4920-af0c-db95b4d8a1e2",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Success - Array of Objects",
"type": "n8n-nodes-base.noOp",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3440,
128
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5aab74e4-7bb8-4678-b6d3-1e00a7a22342",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Error - Array of Objects",
"type": "n8n-nodes-base.stopAndError",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3440,
448
],
"parameters": {
"errorMessage": "Incorrect. Hint: Combine array access `[1]` with object access `.name`."
},
"typeVersion": 1
},
{
"id": "e98182bb-d555-48e0-9126-ca0590e2c424",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Instruction - JS Function",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3664,
16
],
"parameters": {
"color": 6,
"width": 300,
"height": 412,
"content": "### Step 5: JS Function\n\nModify the **\"Test - JS Function\"** node.\n\n**Task:** Create a field `uppercase_name`. Its value should be an expression that gets the `name` and converts it to `UPPERCASE`."
},
"typeVersion": 1
},
{
"id": "06f1e85c-f4e5-4e49-b678-22bb189421c0",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Test - JS Function",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3760,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "uppercase_name",
"type": "string",
"value": "="
}
]
}
},
"typeVersion": 3.4
},
{
"id": "c485b7a3-5b91-4935-b9b6-3440c8e8a241",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Check - JS Function",
"type": "n8n-nodes-base.if",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4016,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b0123456-7890-abcd-ef12-345678901234",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.uppercase_name }}",
"rightValue": "={{ $('Source Data').item.json.name.toUpperCase() }}"
},
{
"id": "7c1238db-4849-4525-b293-4f453b70fa21",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$('Test - JS Function').isExecuted || $('Test - JS Function').params.assignments.assignments[0].value.includes('.toUpperCase()') }}",
"rightValue": "={{ !$('Test - Array of Objects').isExecuted || $('Test - Array of Objects').params.assignments.assignments[0].value.includes('.tasks') }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "be45ea18-23db-407e-a886-a7aeef79c5ee",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Success - JS Function",
"type": "n8n-nodes-base.noOp",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4256,
128
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b56c667a-5818-49de-b042-0d2655f7bea2",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Error - JS Function",
"type": "n8n-nodes-base.stopAndError",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4256,
448
],
"parameters": {
"errorMessage": "Incorrect. Hint: Add `.toUpperCase()` to the end of your expression, inside the `{{ }}`."
},
"typeVersion": 1
},
{
"id": "4151ae3d-4b4c-4d4a-b5b7-b5de5288fd9a",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Instruction - Final",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4480,
-48
],
"parameters": {
"color": 6,
"width": 300,
"height": 476,
"content": "### Final Challenge!\n\nModify the **\"Test - Final\"** node.\n\n**Task:** Create a field `summary`. Its value should be a single string that reads:\n`The status of task 'Review PR' is Pending.`\n\nYou'll need to combine static text with expressions."
},
"typeVersion": 1
},
{
"id": "3d990a6c-c598-4847-b89a-8eb158db4d21",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Test - Final",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4576,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "summary",
"type": "string",
"value": "="
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d81171ab-97ac-4b14-bdae-1a7479ae2e31",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Check - Final",
"type": "n8n-nodes-base.if",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4832,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a1234567-890a-bcde-f123-456789012345",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.summary }}",
"rightValue": "=The status of task '{{ $('Source Data').item.json.tasks[1].name }}' is {{ $('Source Data').item.json.tasks[1].status }}."
},
{
"id": "18e1e8e4-0539-4c4f-85fe-1fa8759717ad",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !$('Test - Final').isExecuted || ($('Test - Final').params.assignments.assignments[0].value.includes('.name') && $('Test - Final').params.assignments.assignments[0].value.includes('.status')) }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e8e56a4a-0c20-42ce-91bc-120be38067ba",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Success - Final",
"type": "n8n-nodes-base.noOp",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
5072,
112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b1ea5a88-8acc-4e46-8998-162c2e01e995",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Error - Final",
"type": "n8n-nodes-base.stopAndError",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
5072,
448
],
"parameters": {
"errorMessage": "Incorrect. Hint: Combine static text and expressions like this: `Some text '{{ expression1 }}' and '{{ expression2 }}`."
},
"typeVersion": 1
},
{
"id": "4e2a56ad-59fd-40af-82cc-ce2e64478a69",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "🎉 SUCCESS 🎉",
"type": "n8n-nodes-base.html",
"notes": "Well done! You're awesome\n\n© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
5424,
224
],
"parameters": {
"html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Success</title>\n</head>\n<body style=\"margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background-color: #f0f2f5; display: flex; align-items: center; justify-content: center; height: 100vh;\">\n\n <!-- The main success card -->\n <div style=\"background-color: #ffffff; padding: 40px 50px; border-radius: 12px; box-shadow: 0 5px 25px rgba(0, 0, 0, 0.1); text-align: center; max-width: 400px; margin: 20px;\">\n\n <!-- Circular Green Checkmark -->\n <div style=\"width: 100px; height: 100px; background-color: #28a745; border-radius: 50%; margin: 0 auto 25px auto; display: flex; align-items: center; justify-content: center;\">\n <span style=\"color: white; font-size: 60px; line-height: 1;\">✔</span>\n </div>\n\n <!-- Main Text -->\n <h1 style=\"font-size: 36px; font-weight: 600; color: #333; margin: 0 0 10px 0;\">\n Success!\n </h1>\n\n <!-- Call to Action Text & Link -->\n <p style=\"font-size: 16px; color: #555; line-height: 1.5; margin: 0;\">\n You've mastered n8n expressions!\n </p>\n <p style=\"font-size: 16px; color: #555; line-height: 1.5; margin: 0;\">\n <a href=\"https://n8n.io/creators/lucaspeyrin\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: #007bff; text-decoration: none; font-weight: 500;\">Check out more templates</a>.\n </p>\n\n </div>\n\n</body>\n</html>"
},
"notesInFlow": true,
"typeVersion": 1.2
},
{
"id": "d9efe1c3-e838-46f9-91bf-074ea6dde9ff",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Instruction - Basic Access1",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
80,
128
],
"parameters": {
"color": 6,
"width": 300,
"height": 316,
"content": ""
},
"typeVersion": 1
},
{
"id": "a5a89905-5c09-454e-9244-cec5233f6483",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer - Basic Access",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
496,
608
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "user_city",
"type": "string",
"value": "={{ $('Source Data').item.json.city }}"
},
{
"id": "28ef996b-d7e7-4d29-b4b5-f245de00d2c0",
"name": "other_solution",
"type": "string",
"value": "={{ $json.city }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "41d01828-1e14-4b3d-9f11-09493d6cb486",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer Note - Basic Access",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
400,
464
],
"parameters": {
"color": 7,
"width": 304,
"height": 320,
"content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Basic Access** step. You can use it as a reference if you get stuck."
},
"typeVersion": 1
},
{
"id": "923f04a6-4593-48df-981e-58ab0a8d9779",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Correct1",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
928,
0
],
"parameters": {
"color": 7,
"height": 272,
"content": "✅ **Correct!**\n\nGreat start. Let's access an array next."
},
"typeVersion": 1
},
{
"id": "4afc256b-88b6-47b2-b105-2b419f18b3f0",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Incorrect1",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
928,
288
],
"parameters": {
"color": 7,
"height": 320,
"content": "❌ **Incorrect.**\n\n**Hint:** Use the format\n`{{ $('Source Data').item.json.city }}`\nto get the city value."
},
"typeVersion": 1
},
{
"id": "37b4dc1e-2588-4243-b0d6-70e5956575f7",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer - Array Access",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1312,
608
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "third_tool",
"type": "string",
"value": "={{ $('Source Data').item.json.tools[2] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "2bbd9ac7-4acc-41b0-9511-0929e961b56a",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer Note - Array Access",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1216,
464
],
"parameters": {
"color": 7,
"width": 304,
"height": 320,
"content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Array Access** step. You can use it as a reference if you get stuck."
},
"typeVersion": 1
},
{
"id": "399cccd8-ff46-49ca-8294-5a9f7484aa47",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Correct2",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1728,
0
],
"parameters": {
"color": 7,
"width": 256,
"height": 272,
"content": "✅ **Correct!**\n\nPerfect. Now for nested data."
},
"typeVersion": 1
},
{
"id": "ff5db2b3-6f5d-42d8-afc1-f79dcd551ce3",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Incorrect2",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
1728,
288
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "❌ **Incorrect.**\n\n**Hint:** Remember that arrays are zero-indexed. The third item is at index `[2]`."
},
"typeVersion": 1
},
{
"id": "0cf6b471-7c91-4576-9a04-31bd99553aed",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer - Nested Object",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2128,
608
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "street_address",
"type": "string",
"value": "={{ $('Source Data').item.json.address.street }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "75b741f5-8eab-400c-8a8a-b35ed5f1e930",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer Note - Nested Object",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2032,
464
],
"parameters": {
"color": 7,
"width": 304,
"height": 320,
"content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Nested Object** step. You can use it as a reference if you get stuck."
},
"typeVersion": 1
},
{
"id": "6b39c109-465c-474e-afe7-bfc00181e5a3",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Correct3",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2544,
0
],
"parameters": {
"color": 7,
"width": 256,
"height": 272,
"content": "✅ **Correct!**\n\nExcellent. Let's combine arrays and objects."
},
"typeVersion": 1
},
{
"id": "8836d90a-8aef-4c18-8fc3-156a7342689b",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Incorrect3",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2544,
288
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "❌ **Incorrect.**\n\n**Hint:** Chain the keys using dots, like `...json.address.street`."
},
"typeVersion": 1
},
{
"id": "13c9a37f-9cc1-4ec3-b04f-1c8ccb4ed400",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer - Array of Objects",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2944,
608
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "second_task_name",
"type": "string",
"value": "={{ $('Source Data').item.json.tasks[1].name }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4021f70b-f8fc-4856-a8a9-32886a39075b",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer Note - Array of Objects",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
2848,
464
],
"parameters": {
"color": 7,
"width": 304,
"height": 320,
"content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Array of Objects** step. You can use it as a reference if you get stuck."
},
"typeVersion": 1
},
{
"id": "f1db5c03-4676-4f7f-b6d3-84e9d09ef886",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Correct4",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3360,
0
],
"parameters": {
"color": 7,
"width": 256,
"height": 272,
"content": "✅ **Correct!**\n\nYou're getting the hang of this. Time for some JavaScript magic."
},
"typeVersion": 1
},
{
"id": "76578357-6c68-4144-a8a4-4d64f121aa01",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Incorrect4",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3360,
288
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "❌ **Incorrect.**\n\n**Hint:** Combine array access `[1]` with object access `.name`."
},
"typeVersion": 1
},
{
"id": "794be646-6a3e-4b8d-a941-90d621dca210",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer - JS Function",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3760,
592
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "uppercase_name",
"type": "string",
"value": "={{ $('Source Data').item.json.name.toUpperCase() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5beb208e-4c0c-4d73-8ace-daacbf00a245",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer Note - JS Function",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
3664,
448
],
"parameters": {
"color": 7,
"width": 304,
"height": 336,
"content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **JS Function** step. You can use it as a reference if you get stuck."
},
"typeVersion": 1
},
{
"id": "3492291f-d171-418f-9dd5-40fbd766acbd",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Correct5",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4176,
0
],
"parameters": {
"color": 7,
"width": 256,
"height": 272,
"content": "✅ **Correct!**\n\nAwesome! One final challenge to bring it all together."
},
"typeVersion": 1
},
{
"id": "d54f48f8-7924-4444-b840-6a3a2ea5f5c9",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Incorrect5",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4176,
288
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "❌ **Incorrect.**\n\n**Hint:** Add `.toUpperCase()` to the end of your expression, inside the `{{ }}`."
},
"typeVersion": 1
},
{
"id": "550c88b1-4e26-4fb5-a0b3-cfcf649b595e",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer - Final",
"type": "n8n-nodes-base.set",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4576,
592
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e87952cb-878e-4feb-8261-342eaf887838",
"name": "summary",
"type": "string",
"value": "=The status of task '{{ $('Source Data').item.json.tasks[1].name }}' is {{ $('Source Data').item.json.tasks[1].status }}."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "edb83bc9-25ed-488d-ab71-dd77103d874b",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Answer Note - Final",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4480,
448
],
"parameters": {
"color": 7,
"width": 304,
"height": 336,
"content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Final** step. You can use it as a reference if you get stuck."
},
"typeVersion": 1
},
{
"id": "7a36c242-d76e-4675-8411-a24506e090c8",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Correct6",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4992,
32
],
"parameters": {
"color": 7,
"width": 256,
"height": 240,
"content": "✅ **YOU DID IT!**"
},
"typeVersion": 1
},
{
"id": "d5a3c589-35f8-49be-a27b-6a82198438bc",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Feedback Incorrect6",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
4992,
288
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "❌ **Incorrect.**\n\n**Hint:** Combine static text and expressions like this:\n`Some text '{{ expression1 }}' and {{ expression2 }}`."
},
"typeVersion": 1
},
{
"id": "30003316-86b3-434e-844c-f67b0722f2e0",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Congratulations!",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
5264,
32
],
"parameters": {
"color": 4,
"width": 416,
"height": 576,
"content": "🎉 **Congratulations! You've passed the test!**\n\nYou have successfully demonstrated your understanding of all the basic JSON data types.\n\nYou are now ready to work with data in n8n.\n\n-- Well done! --"
},
"typeVersion": 1
},
{
"id": "960695a0-b8db-4346-8566-7e5d4feb6571",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
5712,
-384
],
"parameters": {
"color": 3,
"width": 540,
"height": 1280,
"content": "## Was this helpful? Let me know!\n[](https://n8n.ac)\n\nI really hope this test helped you check your Expressions understanding fully. Your feedback is incredibly valuable and helps me create better resources for the n8n community.\n\n### **Share Your Thoughts & Ideas**\n\nWhether you have a suggestion, found a typo, or just want to say thanks, I'd love to hear from you!\nHere's a simple n8n form built for this purpose:\n\n#### ➡️ **[Click here to give feedback](https://api.ia2s.app/form/templates/feedback?template=Expressions%20Test)**\n\n### **Ready to Build Something Great?**\n\nIf you're looking to take your n8n skills or business automation to the next level, I can help.\n\n**🎓 n8n Coaching:** Want to become an n8n pro? I offer one-on-one coaching sessions to help you master workflows, tackle specific problems, and build with confidence.\n#### ➡️ **[Book a Coaching Session](https://api.ia2s.app/form/templates/coaching?template=Expressions%20Test)**\n\n**💼 n8n Consulting:** Have a complex project, an integration challenge, or need a custom workflow built for your business? Let's work together to create a powerful automation solution.\n#### ➡️ **[Inquire About Consulting Services](https://api.ia2s.app/form/templates/consulting?template=Expressions%20Test)**\n\n---\n\nHappy Automating!\nLucas Peyrin | [n8n Academy](https://n8n.ac)"
},
"typeVersion": 1
},
{
"id": "d3a6fe0a-3670-40c2-bcb8-4a75e5721abe",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "Sticky Note16",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
5344,
384
],
"parameters": {
"color": 4,
"width": 272,
"height": 184,
"content": "[](https://n8n.io/creators/lucaspeyrin)"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Source Data": {
"main": [
[
{
"node": "Test - Basic Access",
"type": "main",
"index": 0
}
]
]
},
"Start Test!": {
"main": [
[
{
"node": "Source Data",
"type": "main",
"index": 0
}
]
]
},
"Test - Final": {
"main": [
[
{
"node": "Check - Final",
"type": "main",
"index": 0
}
]
]
},
"Check - Final": {
"main": [
[
{
"node": "Success - Final",
"type": "main",
"index": 0
}
],
[
{
"node": "Error - Final",
"type": "main",
"index": 0
}
]
]
},
"Success - Final": {
"main": [
[
{
"node": "🎉 SUCCESS 🎉",
"type": "main",
"index": 0
}
]
]
},
"Test - JS Function": {
"main": [
[
{
"node": "Check - JS Function",
"type": "main",
"index": 0
}
]
]
},
"Check - JS Function": {
"main": [
[
{
"node": "Success - JS Function",
"type": "main",
"index": 0
}
],
[
{
"node": "Error - JS Function",
"type": "main",
"index": 0
}
]
]
},
"Test - Array Access": {
"main": [
[
{
"node": "Check - Array Access",
"type": "main",
"index": 0
}
]
]
},
"Test - Basic Access": {
"main": [
[
{
"node": "Check - Basic Access",
"type": "main",
"index": 0
}
]
]
},
"Check - Array Access": {
"main": [
[
{
"node": "Success - Array Access",
"type": "main",
"index": 0
}
],
[
{
"node": "Error - Array Access",
"type": "main",
"index": 0
}
]
]
},
"Check - Basic Access": {
"main": [
[
{
"node": "Success - Basic Access",
"type": "main",
"index": 0
}
],
[
{
"node": "Error - Basic Access",
"type": "main",
"index": 0
}
]
]
},
"Test - Nested Object": {
"main": [
[
{
"node": "Check - Nested Object",
"type": "main",
"index": 0
}
]
]
},
"Answer - Basic Access": {
"main": [
[]
]
},
"Check - Nested Object": {
"main": [
[
{
"node": "Success - Nested Object",
"type": "main",
"index": 0
}
],
[
{
"node": "Error - Nested Object",
"type": "main",
"index": 0
}
]
]
},
"Success - JS Function": {
"main": [
[
{
"node": "Test - Final",
"type": "main",
"index": 0
}
]
]
},
"Success - Array Access": {
"main": [
[
{
"node": "Test - Nested Object",
"type": "main",
"index": 0
}
]
]
},
"Success - Basic Access": {
"main": [
[
{
"node": "Test - Array Access",
"type": "main",
"index": 0
}
]
]
},
"Success - Nested Object": {
"main": [
[
{
"node": "Test - Array of Objects",
"type": "main",
"index": 0
}
]
]
},
"Test - Array of Objects": {
"main": [
[
{
"node": "Check - Array of Objects",
"type": "main",
"index": 0
}
]
]
},
"Check - Array of Objects": {
"main": [
[
{
"node": "Success - Array of Objects",
"type": "main",
"index": 0
}
],
[
{
"node": "Error - Array of Objects",
"type": "main",
"index": 0
}
]
]
},
"Success - Array of Objects": {
"main": [
[
{
"node": "Test - JS Function",
"type": "main",
"index": 0
}
]
]
}
}
}