Thanks Patrick.
Here is the response when using the revised app.zip
{"status":"500","message":"obj is not defined","stack":"ReferenceError: obj is not defined\n    at formatRecord (/opt/node_app/lib/core/app.js:352:60)\n    at Object.options.postProcessResponse (/opt/node_app/lib/core/app.js:392:24)\n    at Client_MySQL2.postProcessResponse (/opt/node_app/node_modules/knex/lib/client.js:164:26)\n    at /opt/node_app/node_modules/knex/lib/execution/runner.js:135:51\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n    at async Runner.ensureConnection (/opt/node_app/node_modules/knex/lib/execution/runner.js:300:14)\n    at async Runner.run (/opt/node_app/node_modules/knex/lib/execution/runner.js:30:19)\n    at async App._exec (/opt/node_app/lib/core/app.js:599:30)\n    at async App._exec (/opt/node_app/lib/core/app.js:566:17)\n    at async App.exec (/opt/node_app/lib/core/app.js:535:9)"}
And here is the action json:
{
        "name": "qry_message_thread",
        "module": "dbconnector",
        "action": "single",
        "options": {
          "connection": "db",
          "sql": {
            "type": "SELECT",
            "columns": [
              {
                "table": "message_threads",
                "column": "message_thread_id"
              },
              {
                "table": "message_threads",
                "column": "creator_user_id"
              },
              {
                "table": "message_threads",
                "column": "thread_name"
              },
              {
                "table": "message_threads",
                "column": "created_at"
              },
              {
                "table": "message_threads",
                "column": "thread_type"
              }
            ],
            "params": [
              {
                "operator": "equal",
                "type": "expression",
                "name": ":P1",
                "value": "{{$_GET.message_thread_id}}",
                "test": ""
              },
              {
                "operator": "equal",
                "type": "expression",
                "name": ":P2",
                "value": "{{identity}}",
                "test": ""
              }
            ],
            "table": {
              "name": "message_threads"
            },
            "primary": "message_thread_id",
            "joins": [
              {
                "table": "message_thread_users",
                "column": "*",
                "type": "INNER",
                "clauses": {
                  "condition": "AND",
                  "rules": [
                    {
                      "table": "message_thread_users",
                      "column": "message_thread_id",
                      "operator": "equal",
                      "value": {
                        "table": "message_threads",
                        "column": "message_thread_id"
                      },
                      "operation": "="
                    }
                  ]
                },
                "primary": "message_thread_user_id"
              }
            ],
            "sub": {
              "messages": {
                "type": "SELECT",
                "table": {
                  "name": "messages",
                  "alias": "messages"
                },
                "key": "message_thread_id",
                "columns": [
                  {
                    "table": "messages",
                    "column": "message_id"
                  },
                  {
                    "table": "messages",
                    "column": "created_at"
                  },
                  {
                    "table": "messages",
                    "column": "modified_at"
                  },
                  {
                    "table": "messages",
                    "column": "creator_user_id"
                  },
                  {
                    "table": "messages",
                    "column": "message_text"
                  },
                  {
                    "table": "message_creators",
                    "column": "first_name"
                  },
                  {
                    "table": "message_creators",
                    "column": "last_name"
                  },
                  {
                    "table": "message_creators",
                    "column": "avatar"
                  },
                  {
                    "table": "messages",
                    "column": "message_type"
                  },
                  {
                    "table": "message_creators",
                    "column": "full_name"
                  }
                ],
                "params": [],
                "primary": "message_id",
                "joins": [
                  {
                    "table": "users",
                    "column": "*",
                    "alias": "message_creators",
                    "type": "INNER",
                    "clauses": {
                      "condition": "AND",
                      "rules": [
                        {
                          "table": "message_creators",
                          "column": "user_id",
                          "operator": "equal",
                          "value": {
                            "table": "messages",
                            "column": "creator_user_id"
                          },
                          "operation": "="
                        }
                      ]
                    },
                    "primary": "user_id"
                  }
                ],
                "query": "SELECT messages.message_id, messages.created_at, messages.modified_at, messages.creator_user_id, messages.message_text, message_creators.first_name, message_creators.last_name, message_creators.avatar, messages.message_type, message_creators.full_name\nFROM messages AS messages\nINNER JOIN users AS message_creators ON message_creators.user_id = messages.creator_user_id"
              },
              "members": {
                "type": "SELECT",
                "table": {
                  "name": "message_thread_users",
                  "alias": "users"
                },
                "key": "message_thread_id",
                "columns": [
                  {
                    "table": "users",
                    "column": "message_thread_user_id"
                  },
                  {
                    "table": "users",
                    "column": "created_at"
                  },
                  {
                    "table": "users",
                    "column": "modified_at"
                  },
                  {
                    "table": "users",
                    "column": "user_id"
                  },
                  {
                    "table": "users",
                    "column": "role"
                  },
                  {
                    "table": "member_users",
                    "column": "first_name"
                  },
                  {
                    "table": "member_users",
                    "column": "last_name"
                  },
                  {
                    "table": "member_users",
                    "column": "avatar"
                  },
                  {
                    "table": "member_users",
                    "column": "full_name"
                  }
                ],
                "params": [],
                "primary": "message_thread_user_id",
                "joins": [
                  {
                    "table": "users",
                    "column": "*",
                    "alias": "member_users",
                    "type": "INNER",
                    "clauses": {
                      "condition": "AND",
                      "rules": [
                        {
                          "table": "member_users",
                          "column": "user_id",
                          "operator": "equal",
                          "value": {
                            "table": "users",
                            "column": "user_id"
                          },
                          "operation": "="
                        }
                      ]
                    },
                    "primary": "user_id"
                  }
                ],
                "query": "SELECT users.message_thread_user_id, users.created_at, users.modified_at, users.user_id, users.role, member_users.first_name, member_users.last_name, member_users.avatar, member_users.full_name\nFROM message_thread_users AS users\nINNER JOIN users AS member_users ON member_users.user_id = users.user_id\nWHERE users.status = 'active'\nORDER BY users.role ASC, member_users.last_name ASC",
                "wheres": {
                  "condition": "AND",
                  "rules": [
                    {
                      "id": "users.status",
                      "field": "users.status",
                      "type": "string",
                      "operator": "equal",
                      "value": "active",
                      "data": {
                        "table": "users",
                        "column": "status",
                        "type": "text",
                        "columnObj": {
                          "type": "enum",
                          "enumValues": [
                            "active",
                            "removed_self"
                          ],
                          "default": "'active'",
                          "maxLength": 12,
                          "primary": false,
                          "nullable": true,
                          "name": "status"
                        }
                      },
                      "operation": "="
                    }
                  ],
                  "conditional": null,
                  "valid": true
                },
                "orders": [
                  {
                    "table": "users",
                    "column": "role",
                    "direction": "ASC",
                    "recid": 1
                  },
                  {
                    "table": "member_users",
                    "column": "last_name",
                    "direction": "ASC",
                    "recid": 2
                  }
                ]
              }
            },
            "wheres": {
              "condition": "AND",
              "rules": [
                {
                  "id": "message_threads.message_thread_id",
                  "field": "message_threads.message_thread_id",
                  "type": "double",
                  "operator": "equal",
                  "value": "{{$_GET.message_thread_id}}",
                  "data": {
                    "table": "message_threads",
                    "column": "message_thread_id",
                    "type": "number",
                    "columnObj": {
                      "type": "increments",
                      "primary": true,
                      "nullable": false,
                      "name": "message_thread_id"
                    }
                  },
                  "operation": "="
                },
                {
                  "id": "message_thread_users.user_id",
                  "field": "message_thread_users.user_id",
                  "type": "double",
                  "operator": "equal",
                  "value": "{{identity}}",
                  "data": {
                    "table": "message_thread_users",
                    "column": "user_id",
                    "type": "number",
                    "columnObj": {
                      "type": "reference",
                      "primary": false,
                      "nullable": false,
                      "references": "user_id",
                      "inTable": "users",
                      "referenceType": "integer",
                      "onUpdate": "NO ACTION",
                      "onDelete": "NO ACTION",
                      "name": "user_id"
                    }
                  },
                  "operation": "="
                }
              ],
              "conditional": null,
              "valid": true
            },
            "query": "SELECT message_threads.message_thread_id, message_threads.creator_user_id, message_threads.thread_name, message_threads.created_at, message_threads.thread_type\nFROM message_threads\nINNER JOIN message_thread_users ON message_thread_users.message_thread_id = message_threads.message_thread_id\nWHERE message_threads.message_thread_id = :P1 /* {{$_GET.message_thread_id}} */ AND message_thread_users.user_id = :P2 /* {{identity}} */"
          }
        },
        "meta": [
          {
            "name": "members",
            "type": "array",
            "sub": [
              {
                "type": "text",
                "name": "first_name"
              },
              {
                "type": "text",
                "name": "last_name"
              }
            ]
          },
          {
            "name": "messages",
            "type": "array",
            "sub": [
              {
                "type": "text",
                "name": "first_name"
              },
              {
                "type": "text",
                "name": "last_name"
              }
            ]
          }
        ],
        "outputType": "object",
        "type": "dbconnector_single",
        "output": true
      }