mysql

Custom MySQL node for n8n that merges query results into input data.

Package Information

Downloads: 37 weeklyย /ย 129 monthly
Latest Version: 2.0.0
Author: Mario Bitter

Documentation

Heliont MySQL โ€” n8n Custom Node

A smart wrapper around the native n8n MySQL node for structured SELECT-based query processing and context merging.

n8n mysql License


โœจ Overview

Heliont MySQL extends the base n8n MySQL node with additional functionality designed for flow-based merging of query results into existing input data structures.

Key features:

  • Dual output routing: separates flows with and without results
  • Smart dot-notation merge of SQL results into input JSON
  • Optional debug output with full query and result metadata
  • Fully compatible with existing MySQL credentials and configuration

๐Ÿ”Œ Node Behavior

This node:

  1. Executes the provided SQL query using standard n8n MySQL node infrastructure
  2. Routes results to:
    • Results: if at least one row was returned
    • No Result: if the query was a SELECT and no rows were returned
  3. For single-row SELECT queries, attempts to merge result columns directly into the input JSON via dot notation (e.g., user.name)
  4. For multiple-row results or unmatched columns, attaches them to a result key

๐Ÿ“ค Outputs

Output Port Description
No Result Used when a SELECT query returns 0 rows
Results Used when a result exists or non-SELECT query was executed

Each item passed through includes:

{
  "fieldA": "valueA",
  "nested": { "fieldB": "valueB" },
  "result": {
    "numberOfRows": 2,
    "results": [ ... ]
  },
  "debug": {
    "query": "SELECT * FROM users",
    "queryType": "SELECT",
    "numberOfRows": 2,
    "rawResult": [ ... ]
  }
}

๐Ÿ” debug info is only present when the Detailed Output option is enabled.


๐Ÿง  Merge Logic

  • If the query returns exactly one row, and all its keys match existing dot notation paths in the input, the values are merged directly.
  • If any key does not match an existing dot path in the input, the full result is attached under result.

Example:

SELECT user.name, user.age FROM users WHERE id = 1;

Will inject user.name and user.age directly into:

{
  "user": {
    "name": "Alice",
    "age": 30
  }
}

๐Ÿ› ๏ธ Usage Tips

  • Ideal for context-aware query augmentation (e.g., enrich a contract or session with user profile info)
  • Works seamlessly with workflows expecting conditional logic based on SQL results
  • Combine with the Heliont contract pattern for advanced flow merging

๐Ÿงช Development

This node wraps the internal mysqlVersionDescription and uses the internal router and shared methods (listSearch, loadOptions, etc.).

Output structure is built by extractDataRows() and dot-merging via dotNotationMerge().


๐Ÿ“„ License

MIT License โ€” see LICENSE


๐Ÿ’ก Author

Made with ๐Ÿ’š by Heliont

Discussion