[{"data":1,"prerenderedAt":421},["ShallowReactive",2],{"node-red-\u002Fnode-red\u002Fflowfuse\u002Fflowfuse-tables\u002Fquery":3},{"id":4,"title":5,"body":6,"description":413,"extension":414,"meta":415,"navigation":416,"path":417,"seo":418,"stem":419,"__hash__":420},"nodeRed\u002Fnode-red\u002Fflowfuse\u002Fflowfuse-tables\u002Fquery.md","Query",{"type":7,"value":8,"toc":392},"minimark",[9,17,27,35,40,59,64,80,87,91,98,102,109,114,138,142,153,159,163,169,172,187,190,199,203,206,209,225,238,243,247,251,266,270,277,281,284,288,306,310,313,336,340,347,351,356,360,372,379,388],[10,11,13],"h1",{"id":12},"",[14,15],"binding",{"value":16},"meta.title",[18,19,20,21,26],"p",{},"The Query node allows you to write and run queries against database tables managed by ",[22,23,25],"a",{"href":24},"\u002Fdocs\u002Fuser\u002Fff-tables\u002F","FlowFuse Tables",". The node is pre-configured to connect automatically when used within a FlowFuse Node-RED instance.",[18,28,29,30,34],{},"With ",[31,32,33],"strong",{},"FlowFuse Expert"," integration, queries can be generated from natural language prompts, making database operations accessible without SQL expertise.",[36,37,39],"h2",{"id":38},"outputs","Outputs",[18,41,42,43,47,48,51,52,55,56,58],{},"The response (rows) is provided in ",[44,45,46],"code",{},"msg.payload"," as an array. When ",[31,49,50],{},"Split results"," is enabled with ",[31,53,54],{},"Number of rows = 1",", ",[44,57,46],{}," contains a single row object instead.",[60,61,63],"h3",{"id":62},"additional-metadata","Additional Metadata",[65,66,67,74],"ul",{},[68,69,70,73],"li",{},[44,71,72],{},"msg.pgsql.rowCount"," - Number of rows affected",[68,75,76,79],{},[44,77,78],{},"msg.pgsql.command"," - The executed command",[18,81,82,83,86],{},"For multiple queries, ",[44,84,85],{},"msg.pgsql"," is returned as an array.",[36,88,90],{"id":89},"inputs","Inputs",[18,92,93,94,97],{},"SQL queries can be configured directly in the node or passed dynamically via ",[44,95,96],{},"msg.query",".",[60,99,101],{"id":100},"parameterized-queries-recommended","Parameterized Queries (Recommended)",[18,103,104,105,108],{},"Pass parameters as an array via ",[44,106,107],{},"msg.params",":",[110,111,113],"h5",{"id":112},"input-data","Input Data",[115,116,120],"pre",{"className":117,"code":118,"language":119,"meta":12,"style":12},"language-javascript shiki shiki-themes github-light github-dark","msg.params = [ msg.id ];\n","javascript",[44,121,122],{"__ignoreMap":12},[123,124,127,131,135],"span",{"class":125,"line":126},"line",1,[123,128,130],{"class":129},"sVt8B","msg.params ",[123,132,134],{"class":133},"szBVR","=",[123,136,137],{"class":129}," [ msg.id ];\n",[110,139,141],{"id":140},"query-defined-in-the-node","Query defined in the node",[115,143,147],{"className":144,"code":145,"language":146,"meta":12,"style":12},"language-sql shiki shiki-themes github-light github-dark","SELECT * FROM table WHERE id = $1\n","sql",[44,148,149],{"__ignoreMap":12},[123,150,151],{"class":125,"line":126},[123,152,145],{},[154,155,156],"blockquote",{},[18,157,158],{},"Tip: For production environments, it is recommended to use parameterized queries instead. Parameterized queries automatically handle quoting and escaping, making them safer and more reliable.",[60,160,162],{"id":161},"named-parameters","Named Parameters",[18,164,165,166,108],{},"Pass parameters as an object via ",[44,167,168],{},"msg.queryParameters",[110,170,113],{"id":171},"input-data-1",[115,173,175],{"className":117,"code":174,"language":119,"meta":12,"style":12},"msg.queryParameters.id = msg.id;\n",[44,176,177],{"__ignoreMap":12},[123,178,179,182,184],{"class":125,"line":126},[123,180,181],{"class":129},"msg.queryParameters.id ",[123,183,134],{"class":133},[123,185,186],{"class":129}," msg.id;\n",[110,188,141],{"id":189},"query-defined-in-the-node-1",[115,191,193],{"className":144,"code":192,"language":146,"meta":12,"style":12},"SELECT * FROM table WHERE id = $id;\n",[44,194,195],{"__ignoreMap":12},[123,196,197],{"class":125,"line":126},[123,198,192],{},[60,200,202],{"id":201},"mustache-templates","Mustache Templates",[18,204,205],{},"Reference message properties using Mustache syntax:",[110,207,141],{"id":208},"query-defined-in-the-node-2",[115,210,212],{"className":144,"code":211,"language":146,"meta":12,"style":12},"SELECT * FROM table WHERE id = {{{ msg.id }}}\nSELECT * FROM table WHERE name = '{{{ msg.name }}}'\n",[44,213,214,219],{"__ignoreMap":12},[123,215,216],{"class":125,"line":126},[123,217,218],{},"SELECT * FROM table WHERE id = {{{ msg.id }}}\n",[123,220,222],{"class":125,"line":221},2,[123,223,224],{},"SELECT * FROM table WHERE name = '{{{ msg.name }}}'\n",[154,226,227],{},[18,228,229,230,233,234,237],{},"Note: Care must be taken to ensure incoming string data is properly escaped (e.g., single quotes must be doubled: ",[44,231,232],{},"'"," to ",[44,235,236],{},"''",") to prevent syntax errors and SQL injection.",[154,239,240],{},[18,241,242],{},"Note: Inserting dynamic values into SQL statements using Mustache templates exposes your data to SQL Injection risks if the input is untrusted. We strongly recommend using Parameterized Queries or Named Parameters instead; these features are designed to safely separate data from the SQL command.",[36,244,246],{"id":245},"important-details","Important Details",[60,248,250],{"id":249},"case-sensitivity","Case Sensitivity",[18,252,253,254,257,258,261,262,265],{},"By default, PostgreSQL converts unquoted table and column names to lowercase, making them case-insensitive (e.g., ",[44,255,256],{},"SELECT DataVal FROM MyTable"," is the same as ",[44,259,260],{},"SELECT dataval FROM  mytable",").\nTo avoid errors and ensure portability, it is common to use only lowercase, unquoted identifiers.\nHowever, where required, you can wrap names in double quotes (e.g., ",[44,263,264],{},"SELECT \"DataVal\" FROM \"MyTable\"",") to explicitly force them to be case-sensitive if the names were defined that way.",[60,267,269],{"id":268},"security-best-practices","Security Best Practices",[18,271,272,273,276],{},"Parameterized queries are ",[31,274,275],{},"strongly recommended"," for production use over Mustache templates for security and maintainability.",[60,278,280],{"id":279},"named-parameters-limitation","Named Parameters Limitation",[18,282,283],{},"Named parameters are emulated (not native PostgreSQL), making them less robust than numeric parameters.",[60,285,287],{"id":286},"backpressure-management","Backpressure Management",[18,289,290,291,293,294,297,298,301,302,305],{},"When ",[31,292,50],{}," is enabled, the node waits for ",[44,295,296],{},"msg.tick"," before releasing the next batch, preventing memory issues. It exposes ",[44,299,300],{},"node.tickConsumer"," and ",[44,303,304],{},"node.tickProvider"," for automatic flow control.",[60,307,309],{"id":308},"split-results-sequences","Split Results Sequences",[18,311,312],{},"Streaming messages follow sequence conventions with:",[65,314,315,320,325,330],{},[68,316,317],{},[44,318,319],{},"msg.parts.id",[68,321,322],{},[44,323,324],{},"msg.parts.index",[68,326,327],{},[44,328,329],{},"msg.parts.count",[68,331,332,335],{},[44,333,334],{},"msg.complete"," flag",[36,337,339],{"id":338},"requirements","Requirements",[18,341,342,343,346],{},"FlowFuse Tables requires ",[31,344,345],{},"Enterprise tier"," and must be enabled for your team.",[36,348,350],{"id":349},"example-flow","Example Flow",[352,353],"render-flow",{":height":354,"flow":355},"500","eyUgcmF3ICV9Clt7ImlkIjoiOWNkNzQ5OGQ0ZjgzMmYxZSIsInR5cGUiOiJncm91cCIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwic3R5bGUiOnsic3Ryb2tlIjoiI2IyYjNiZCIsInN0cm9rZS1vcGFjaXR5IjoiMSIsImZpbGwiOiIjZjJmM2ZiIiwiZmlsbC1vcGFjaXR5IjoiMC41IiwibGFiZWwiOnRydWUsImxhYmVsLXBvc2l0aW9uIjoibnciLCJjb2xvciI6IiMzMjMzM2IifSwibm9kZXMiOlsiZjI3NzAyYWI4YzhhNThkMiIsImRhNmUyOTNmYTM2M2IxNzIiLCJmNzRlZGUzZmJjZjRlZjMyIiwiOGJmYjM5ZjI1MmMxNmE3OSIsIjQxZTFmOWUwZTk3NzY4YTgiXSwieCI6MzQsInkiOjM5LCJ3Ijo4OTIsImgiOjE0Mn0seyJpZCI6ImYyNzcwMmFiOGM4YTU4ZDIiLCJ0eXBlIjoidGFibGVzLXF1ZXJ5IiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJnIjoiOWNkNzQ5OGQ0ZjgzMmYxZSIsIm5hbWUiOiIiLCJxdWVyeSI6IiIsInNwbGl0IjpmYWxzZSwicm93c1Blck1zZyI6MSwieCI6NjcwLCJ5IjoxNDAsIndpcmVzIjpbWyI4YmZiMzlmMjUyYzE2YTc5Il1dfSx7ImlkIjoiZGE2ZTI5M2ZhMzYzYjE3MiIsInR5cGUiOiJpbmplY3QiLCJ6IjoiOWRiMmQ5ZWQ3ZjAwYjhhZiIsImciOiI5Y2Q3NDk4ZDRmODMyZjFlIiwibmFtZSI6IiIsInByb3BzIjpbeyJwIjoicGF5bG9hZCJ9LHsicCI6InRvcGljIiwidnQiOiJzdHIifV0sInJlcGVhdCI6IiIsImNyb250YWIiOiIiLCJvbmNlIjpmYWxzZSwib25jZURlbGF5IjowLjEsInRvcGljIjoiIiwicGF5bG9hZCI6IiIsInBheWxvYWRUeXBlIjoiZGF0ZSIsIngiOjE0MCwieSI6MTQwLCJ3aXJlcyI6W1siZjc0ZWRlM2ZiY2Y0ZWYzMiJdXX0seyJpZCI6ImY3NGVkZTNmYmNmNGVmMzIiLCJ0eXBlIjoidGVtcGxhdGUiLCJ6IjoiOWRiMmQ5ZWQ3ZjAwYjhhZiIsImciOiI5Y2Q3NDk4ZDRmODMyZjFlIiwibmFtZSI6IlNldCBRdWVyeSIsImZpZWxkIjoicXVlcnkiLCJmaWVsZFR5cGUiOiJtc2ciLCJmb3JtYXQiOiJoYW5kbGViYXJzIiwic3ludGF4IjoibXVzdGFjaGUiLCJ0ZW1wbGF0ZSI6IkNSRUFURSBUQUJMRSBcInNlbnNvcl9kYXRhXCIgKFxuICAgIFwiaWRcIiBTRVJJQUwgUFJJTUFSWSBLRVksXG4gICAgXCJzZW5zb3JfaWRcIiBURVhUIE5PVCBOVUxMLFxuICAgIFwidGltZXN0YW1wXCIgVElNRVNUQU1QIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsXG4gICAgXCJ0ZW1wZXJhdHVyZVwiIFJFQUwsXG4gICAgXCJ1bml0XCIgVEVYVCBERUZBVUxUICdjZWxzaXVzJ1xuKTtcbiIsIm91dHB1dCI6InN0ciIsIngiOjMwMCwieSI6MTQwLCJ3aXJlcyI6W1siZjI3NzAyYWI4YzhhNThkMiJdXX0seyJpZCI6IjhiZmIzOWYyNTJjMTZhNzkiLCJ0eXBlIjoiZGVidWciLCJ6IjoiOWRiMmQ5ZWQ3ZjAwYjhhZiIsImciOiI5Y2Q3NDk4ZDRmODMyZjFlIiwibmFtZSI6IlJlc3VsdCIsImFjdGl2ZSI6dHJ1ZSwidG9zaWRlYmFyIjp0cnVlLCJjb25zb2xlIjpmYWxzZSwidG9zdGF0dXMiOmZhbHNlLCJjb21wbGV0ZSI6InBheWxvYWQiLCJ0YXJnZXRUeXBlIjoibXNnIiwic3RhdHVzVmFsIjoiIiwic3RhdHVzVHlwZSI6ImF1dG8iLCJ4Ijo4MzAsInkiOjE0MCwid2lyZXMiOltdfSx7ImlkIjoiNDFlMWY5ZTBlOTc3NjhhOCIsInR5cGUiOiJjb21tZW50IiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJnIjoiOWNkNzQ5OGQ0ZjgzMmYxZSIsIm5hbWUiOiJQYXNzIHRoZSBxdWVyeSB2aWEgbXNnLnF1ZXJ5IiwiaW5mbyI6IiIsIngiOjE4MCwieSI6ODAsIndpcmVzIjpbXX0seyJpZCI6IjkxZmEyMTlhZmM3OGUzOTUiLCJ0eXBlIjoiZ3JvdXAiLCJ6IjoiOWRiMmQ5ZWQ3ZjAwYjhhZiIsInN0eWxlIjp7InN0cm9rZSI6IiNiMmIzYmQiLCJzdHJva2Utb3BhY2l0eSI6IjEiLCJmaWxsIjoiI2YyZjNmYiIsImZpbGwtb3BhY2l0eSI6IjAuNSIsImxhYmVsIjp0cnVlLCJsYWJlbC1wb3NpdGlvbiI6Im53IiwiY29sb3IiOiIjMzIzMzNiIn0sIm5vZGVzIjpbImFlZmExOTNiZmQwNGU1YzIiLCJlNWJkM2ZiZjlhZjVlNTE5IiwiNmNjNWExMjY2NWRmMzJjYiIsIjFlYmU0ZjEzODFmZTcxZGQiLCI3YTM5N2NkNjFkZDZhMjEwIl0sIngiOjM0LCJ5Ijo1MTksInciOjg5MiwiaCI6MTQyfSx7ImlkIjoiYWVmYTE5M2JmZDA0ZTVjMiIsInR5cGUiOiJ0YWJsZXMtcXVlcnkiLCJ6IjoiOWRiMmQ5ZWQ3ZjAwYjhhZiIsImciOiI5MWZhMjE5YWZjNzhlMzk1IiwibmFtZSI6IiIsInF1ZXJ5IjoiU0VMRUNUICogRlJPTSBwdWJsaWMuc2Vuc29yX3JlYWRpbmdzIFdIRVJFIFwidGVtcGVyYXR1cmVcIiA+IHt7e21zZy50ZW1wZXJhdHVyZVRocmVzaG9sZH19fTsiLCJzcGxpdCI6ZmFsc2UsInJvd3NQZXJNc2ciOjEsIngiOjY3MCwieSI6NjIwLCJ3aXJlcyI6W1siNmNjNWExMjY2NWRmMzJjYiJdXX0seyJpZCI6ImU1YmQzZmJmOWFmNWU1MTkiLCJ0eXBlIjoiaW5qZWN0IiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJnIjoiOTFmYTIxOWFmYzc4ZTM5NSIsIm5hbWUiOiIiLCJwcm9wcyI6W3sicCI6InBheWxvYWQifSx7InAiOiJ0b3BpYyIsInZ0Ijoic3RyIn1dLCJyZXBlYXQiOiIiLCJjcm9udGFiIjoiIiwib25jZSI6ZmFsc2UsIm9uY2VEZWxheSI6MC4xLCJ0b3BpYyI6IiIsInBheWxvYWQiOiIiLCJwYXlsb2FkVHlwZSI6ImRhdGUiLCJ4IjoxNDAsInkiOjYyMCwid2lyZXMiOltbIjdhMzk3Y2Q2MWRkNmEyMTAiXV19LHsiaWQiOiI2Y2M1YTEyNjY1ZGYzMmNiIiwidHlwZSI6ImRlYnVnIiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJnIjoiOTFmYTIxOWFmYzc4ZTM5NSIsIm5hbWUiOiJSZXN1bHQiLCJhY3RpdmUiOnRydWUsInRvc2lkZWJhciI6dHJ1ZSwiY29uc29sZSI6ZmFsc2UsInRvc3RhdHVzIjpmYWxzZSwiY29tcGxldGUiOiJwYXlsb2FkIiwidGFyZ2V0VHlwZSI6Im1zZyIsInN0YXR1c1ZhbCI6IiIsInN0YXR1c1R5cGUiOiJhdXRvIiwieCI6ODMwLCJ5Ijo2MjAsIndpcmVzIjpbXX0seyJpZCI6IjFlYmU0ZjEzODFmZTcxZGQiLCJ0eXBlIjoiY29tbWVudCIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6IjkxZmEyMTlhZmM3OGUzOTUiLCJuYW1lIjoiVXNpbmcgTXVzdGFjaGUgdGVtcGxhdGUiLCJpbmZvIjoiIiwieCI6MTcwLCJ5Ijo1NjAsIndpcmVzIjpbXX0seyJpZCI6IjdhMzk3Y2Q2MWRkNmEyMTAiLCJ0eXBlIjoiY2hhbmdlIiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJnIjoiOTFmYTIxOWFmYzc4ZTM5NSIsIm5hbWUiOiJTZXQgdGVtcGVyYXR1cmVUaHJlc2hvbGQiLCJydWxlcyI6W3sidCI6InNldCIsInAiOiJ0ZW1wZXJhdHVyZVRocmVzaG9sZCIsInB0IjoibXNnIiwidG8iOiIyMCIsInRvdCI6Im51bSJ9XSwiYWN0aW9uIjoiIiwicHJvcGVydHkiOiIiLCJmcm9tIjoiIiwidG8iOiIiLCJyZWciOmZhbHNlLCJ4IjozNTAsInkiOjYyMCwid2lyZXMiOltbImFlZmExOTNiZmQwNGU1YzIiXV19LHsiaWQiOiJlMDBhMDJhMTFhMzIyNjgzIiwidHlwZSI6Imdyb3VwIiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJzdHlsZSI6eyJzdHJva2UiOiIjYjJiM2JkIiwic3Ryb2tlLW9wYWNpdHkiOiIxIiwiZmlsbCI6IiNmMmYzZmIiLCJmaWxsLW9wYWNpdHkiOiIwLjUiLCJsYWJlbCI6dHJ1ZSwibGFiZWwtcG9zaXRpb24iOiJudyIsImNvbG9yIjoiIzMyMzMzYiJ9LCJub2RlcyI6WyIxNGQ0N2Q4OTMxYTI4NTViIiwiNThhMzJlMDM0MGVkMjY4ZCIsIjc2MmNhZmYxOWUxNzIyYjciLCI5OTdkOTI0NDFmNGQyZWViIiwiYWUzZTRhNjk0MGE4ZTIzNiJdLCJ4IjozNCwieSI6MzU5LCJ3Ijo4OTIsImgiOjE0Mn0seyJpZCI6IjE0ZDQ3ZDg5MzFhMjg1NWIiLCJ0eXBlIjoidGFibGVzLXF1ZXJ5IiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJnIjoiZTAwYTAyYTExYTMyMjY4MyIsIm5hbWUiOiIiLCJxdWVyeSI6IkRFTEVURSBGUk9NIFwic2Vuc29yX2RhdGFcIlxuV0hFUkUgXCJpZFwiID0gJGlkO1xuIiwic3BsaXQiOmZhbHNlLCJyb3dzUGVyTXNnIjoxLCJ4Ijo2NzAsInkiOjQ2MCwid2lyZXMiOltbIjc2MmNhZmYxOWUxNzIyYjciXV19LHsiaWQiOiI1OGEzMmUwMzQwZWQyNjhkIiwidHlwZSI6ImluamVjdCIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6ImUwMGEwMmExMWEzMjI2ODMiLCJuYW1lIjoiIiwicHJvcHMiOlt7InAiOiJwYXlsb2FkIn0seyJwIjoidG9waWMiLCJ2dCI6InN0ciJ9XSwicmVwZWF0IjoiIiwiY3JvbnRhYiI6IiIsIm9uY2UiOmZhbHNlLCJvbmNlRGVsYXkiOjAuMSwidG9waWMiOiIiLCJwYXlsb2FkIjoiIiwicGF5bG9hZFR5cGUiOiJkYXRlIiwieCI6MTQwLCJ5Ijo0NjAsIndpcmVzIjpbWyJhZTNlNGE2OTQwYThlMjM2Il1dfSx7ImlkIjoiNzYyY2FmZjE5ZTE3MjJiNyIsInR5cGUiOiJkZWJ1ZyIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6ImUwMGEwMmExMWEzMjI2ODMiLCJuYW1lIjoiUmVzdWx0IiwiYWN0aXZlIjp0cnVlLCJ0b3NpZGViYXIiOnRydWUsImNvbnNvbGUiOmZhbHNlLCJ0b3N0YXR1cyI6ZmFsc2UsImNvbXBsZXRlIjoicGF5bG9hZCIsInRhcmdldFR5cGUiOiJtc2ciLCJzdGF0dXNWYWwiOiIiLCJzdGF0dXNUeXBlIjoiYXV0byIsIngiOjgzMCwieSI6NDYwLCJ3aXJlcyI6W119LHsiaWQiOiI5OTdkOTI0NDFmNGQyZWViIiwidHlwZSI6ImNvbW1lbnQiLCJ6IjoiOWRiMmQ5ZWQ3ZjAwYjhhZiIsImciOiJlMDBhMDJhMTFhMzIyNjgzIiwibmFtZSI6Ik5hbWVkIHBhcmFtZXRlcml6ZWQgcXVlcnkiLCJpbmZvIjoiIiwieCI6MTgwLCJ5Ijo0MDAsIndpcmVzIjpbXX0seyJpZCI6ImFlM2U0YTY5NDBhOGUyMzYiLCJ0eXBlIjoiY2hhbmdlIiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJnIjoiZTAwYTAyYTExYTMyMjY4MyIsIm5hbWUiOiJTZXQgcXVlcnlQYXJhbWV0ZXJzIiwicnVsZXMiOlt7InQiOiJzZXQiLCJwIjoicXVlcnlQYXJhbWV0ZXJzIiwicHQiOiJtc2ciLCJ0byI6Int9IiwidG90IjoianNvbiJ9LHsidCI6InNldCIsInAiOiJxdWVyeVBhcmFtZXRlcnMuaWQiLCJwdCI6Im1zZyIsInRvIjoiMyIsInRvdCI6Im51bSJ9XSwiYWN0aW9uIjoiIiwicHJvcGVydHkiOiIiLCJmcm9tIjoiIiwidG8iOiIiLCJyZWciOmZhbHNlLCJ4IjozNDAsInkiOjQ2MCwid2lyZXMiOltbIjE0ZDQ3ZDg5MzFhMjg1NWIiXV19LHsiaWQiOiJmZDJmMzY1MTk5NGQ0NGQzIiwidHlwZSI6Imdyb3VwIiwieiI6IjlkYjJkOWVkN2YwMGI4YWYiLCJzdHlsZSI6eyJzdHJva2UiOiIjYjJiM2JkIiwic3Ryb2tlLW9wYWNpdHkiOiIxIiwiZmlsbCI6IiNmMmYzZmIiLCJmaWxsLW9wYWNpdHkiOiIwLjUiLCJsYWJlbCI6dHJ1ZSwibGFiZWwtcG9zaXRpb24iOiJudyIsImNvbG9yIjoiIzMyMzMzYiJ9LCJub2RlcyI6WyI0MjM1MzI0NTk0MjFkZGIwIiwiZjE0ZmZjMWZmNjA2ZjM3NyIsIjI4NTc5Y2U1NmRiYjVkYWIiLCIzNWY5YmMzZmY4MmEzNzg5IiwiNjhkNTMwMjk1MDgyNTgxYSIsIjJjYjE1Y2JmM2ExYTM4NzgiXSwieCI6MzQsInkiOjE5OSwidyI6ODkyLCJoIjoxNDJ9LHsiaWQiOiI0MjM1MzI0NTk0MjFkZGIwIiwidHlwZSI6InRhYmxlcy1xdWVyeSIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6ImZkMmYzNjUxOTk0ZDQ0ZDMiLCJuYW1lIjoiIiwicXVlcnkiOiJJTlNFUlQgSU5UTyBcInNlbnNvcl9kYXRhXCIgKFwic2Vuc29yX2lkXCIsIFwidGVtcGVyYXR1cmVcIiwgXCJ1bml0XCIpXG5WQUxVRVMgKCQxLCAkMiwgJDMpO1xuIiwic3BsaXQiOmZhbHNlLCJyb3dzUGVyTXNnIjoxLCJ4Ijo2NzAsInkiOjMwMCwid2lyZXMiOltbIjI4NTc5Y2U1NmRiYjVkYWIiXV19LHsiaWQiOiJmMTRmZmMxZmY2MDZmMzc3IiwidHlwZSI6ImluamVjdCIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6ImZkMmYzNjUxOTk0ZDQ0ZDMiLCJuYW1lIjoiIiwicHJvcHMiOlt7InAiOiJwYXlsb2FkIn0seyJwIjoidG9waWMiLCJ2dCI6InN0ciJ9XSwicmVwZWF0IjoiIiwiY3JvbnRhYiI6IiIsIm9uY2UiOmZhbHNlLCJvbmNlRGVsYXkiOjAuMSwidG9waWMiOiIiLCJwYXlsb2FkIjoiIiwicGF5bG9hZFR5cGUiOiJkYXRlIiwieCI6MTQwLCJ5IjozMDAsIndpcmVzIjpbWyI2OGQ1MzAyOTUwODI1ODFhIl1dfSx7ImlkIjoiMjg1NzljZTU2ZGJiNWRhYiIsInR5cGUiOiJkZWJ1ZyIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6ImZkMmYzNjUxOTk0ZDQ0ZDMiLCJuYW1lIjoiUmVzdWx0IiwiYWN0aXZlIjp0cnVlLCJ0b3NpZGViYXIiOnRydWUsImNvbnNvbGUiOmZhbHNlLCJ0b3N0YXR1cyI6ZmFsc2UsImNvbXBsZXRlIjoicGF5bG9hZCIsInRhcmdldFR5cGUiOiJtc2ciLCJzdGF0dXNWYWwiOiIiLCJzdGF0dXNUeXBlIjoiYXV0byIsIngiOjgzMCwieSI6MzAwLCJ3aXJlcyI6W119LHsiaWQiOiIzNWY5YmMzZmY4MmEzNzg5IiwidHlwZSI6ImNvbW1lbnQiLCJ6IjoiOWRiMmQ5ZWQ3ZjAwYjhhZiIsImciOiJmZDJmMzY1MTk5NGQ0NGQzIiwibmFtZSI6Ik51bWVyaWMgcGFyYW1ldGVyaXplZCBxdWVyeSIsImluZm8iOiIiLCJ4IjoxODAsInkiOjI0MCwid2lyZXMiOltdfSx7ImlkIjoiNjhkNTMwMjk1MDgyNTgxYSIsInR5cGUiOiJmdW5jdGlvbiIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6ImZkMmYzNjUxOTk0ZDQ0ZDMiLCJuYW1lIjoiU2ltdWxhdGUgU2Vuc29yIiwiZnVuYyI6Ii8vIFNpbXVsYXRlIHNlbnNvciBkYXRhIGFuZCBvdXRwdXQgYXMgYW4gb2JqZWN0IGluIG1zZy5wYXlsb2FkXG5cbmxldCB0ZW1wZXJhdHVyZSA9ICgyMCArIE1hdGgucmFuZG9tKCkgKiAxMCkudG9GaXhlZCgyKTtcbmxldCBzZW5zb3JJZHMgPSBbXCJzZW5zb3JfMDFcIiwgXCJzZW5zb3JfMDJcIiwgXCJzZW5zb3JfMDNcIl07XG5sZXQgc2Vuc29yX2lkID0gc2Vuc29ySWRzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHNlbnNvcklkcy5sZW5ndGgpXTtcblxubXNnLnBheWxvYWQgPSB7XG4gICAgc2Vuc29yX2lkOiBzZW5zb3JfaWQsXG4gICAgdGVtcGVyYXR1cmU6IE51bWJlcih0ZW1wZXJhdHVyZSksXG4gICAgdW5pdDogXCJjZWxzaXVzXCIsXG59O1xuXG5yZXR1cm4gbXNnO1xuIiwib3V0cHV0cyI6MSwidGltZW91dCI6MCwibm9lcnIiOjAsImluaXRpYWxpemUiOiIiLCJmaW5hbGl6ZSI6IiIsImxpYnMiOltdLCJ4IjozMjAsInkiOjMwMCwid2lyZXMiOltbIjJjYjE1Y2JmM2ExYTM4NzgiXV19LHsiaWQiOiIyY2IxNWNiZjNhMWEzODc4IiwidHlwZSI6ImNoYW5nZSIsInoiOiI5ZGIyZDllZDdmMDBiOGFmIiwiZyI6ImZkMmYzNjUxOTk0ZDQ0ZDMiLCJuYW1lIjoiU2V0IFBhcmFtcyIsInJ1bGVzIjpbeyJ0Ijoic2V0IiwicCI6InBhcmFtcyIsInB0IjoibXNnIiwidG8iOiJbbXNnLnBheWxvYWQuc2Vuc29yX2lkLCBtc2cucGF5bG9hZC50ZW1wZXJhdHVyZSwgbXNnLnBheWxvYWQudW5pdF0iLCJ0b3QiOiJqc29uYXRhIn1dLCJhY3Rpb24iOiIiLCJwcm9wZXJ0eSI6IiIsImZyb20iOiIiLCJ0byI6IiIsInJlZyI6ZmFsc2UsIngiOjUxMCwieSI6MzAwLCJ3aXJlcyI6W1siNDIzNTMyNDU5NDIxZGRiMCJdXX0seyJpZCI6ImJmNTE3ZWEzZDUwM2RkNWEiLCJ0eXBlIjoiZ2xvYmFsLWNvbmZpZyIsImVudiI6W10sIm1vZHVsZXMiOnsiQGZsb3dmdXNlL25yLXRhYmxlcy1ub2RlcyI6IjAuMS4wIn19XQp7JSBlbmRyYXcgJX0=",[36,357,359],{"id":358},"generate-queries-with-flowfuse-expert","Generate Queries with FlowFuse Expert",[18,361,362,363,366,367,371],{},"In the Query node, click ",[31,364,365],{},"\"Assistant\"",", enter plain English like ",[368,369,370],"em",{},"\"Show me all readings from today\"",", and the AI automatically generates the SQL query.",[18,373,374],{},[375,376],"img",{"alt":377,"src":378},"Query Node FlowFuse Expert","\u002Fblog\u002F2025\u002F09\u002Fimages\u002Fflowfuse-ai-assistance-table-demo.gif",[18,380,381,382,97],{},"For more detailed information on natural language queries with the Query node, read this article: ",[22,383,387],{"href":384,"rel":385},"https:\u002F\u002Fflowfuse.com\u002Fblog\u002F2025\u002F09\u002Fai-assistant-flowfuse-tables\u002F",[386],"nofollow","FlowFuse Expert for FlowFuse Tables",[389,390,391],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":12,"searchDepth":221,"depth":221,"links":393},[394,398,403,410,411,412],{"id":38,"depth":221,"text":39,"children":395},[396],{"id":62,"depth":397,"text":63},3,{"id":89,"depth":221,"text":90,"children":399},[400,401,402],{"id":100,"depth":397,"text":101},{"id":161,"depth":397,"text":162},{"id":201,"depth":397,"text":202},{"id":245,"depth":221,"text":246,"children":404},[405,406,407,408,409],{"id":249,"depth":397,"text":250},{"id":268,"depth":397,"text":269},{"id":279,"depth":397,"text":280},{"id":286,"depth":397,"text":287},{"id":308,"depth":397,"text":309},{"id":338,"depth":221,"text":339},{"id":349,"depth":221,"text":350},{"id":358,"depth":221,"text":359},"The Query node allows you to run SQL queries against FlowFuse Tables, supporting parameterized queries, Mustache templates, and AI-assisted query generation for seamless database interactions.","md",{},true,"\u002Fnode-red\u002Fflowfuse\u002Fflowfuse-tables\u002Fquery",{"title":5,"description":413},"node-red\u002Fflowfuse\u002Fflowfuse-tables\u002Fquery","bsdJvuPHdL79w5LP0JDuyZa_rWaQNweVtOO6D5qVAD8",1780070556830]