Db2 带表架构的环回,不在选项中标识架构

Db2 带表架构的环回,不在选项中标识架构,db2,loopbackjs,Db2,Loopbackjs,问题的性质 我的db2数据库广泛使用表架构进行组织,因此所讨论的表是LIVE.TBLADDRESS- 我的模型使用“选项”来指定表模式 "options": { "idInjection": false, "db2": { "schema": "LIVE", "table": "TBLADDRESS" } } 该模型位于model-config.json中,使用 ,"Tbladdress": { "dataSource": "x3

问题的性质

我的db2数据库广泛使用表架构进行组织,因此所讨论的表是LIVE.TBLADDRESS-

我的模型使用“选项”来指定表模式

"options": {
    "idInjection": false,
    "db2": {
        "schema": "LIVE",
        "table": "TBLADDRESS"
    }
}
该模型位于model-config.json中,使用

,"Tbladdress": {
    "dataSource": "x3",
    "public": true
}
当我尝试使用资源管理器执行简单的“get”或任何其他API调用时,会出现错误

"statusCode": 500,
"name": "Error",
"message": "[IBM][CLI Driver][DB2/LINUXX8664] SQL0204N "DB2X.TBLADDRESS" is an undefined name. SQLSTATE=42704\r\n",
预期行为

一旦我指定了模式,我希望API能够正确解析

实际行为

始终使用db user的默认架构…无论选项中指定的架构如何

建议的解决方案

{
    "name": "Tbladdress",
    "options": {
        "idInjection": false,
        "db2": {
            "schema": "LIVE",
            "table": "TBLADDRESS"
        }
    },
    "properties": {
        ...
    }
}
{
    "db": {
        "name": "db",
        "connector": "memory"
    },
    "x3": {
        "name": "x3",
        "connector": "db2",
        "username": "...",
        "password": "...",
        "database": "...",
        "hostname": "...",
        "port":     50000
    }
}
{
    "_meta": {
    ...
    },
    "User": {
        "dataSource": "db"
    },
    "AccessToken": {
        "dataSource": "db",
        "public": false
    },
    "ACL": {
        "dataSource": "db",
        "public": false
    },
    "RoleMapping": {
        "dataSource": "db",
        "public": false,
        "options": {
            "strictObjectIDCoercion": true
        }
    },
    "Role": {
        "dataSource": "db",
        "public": false
    }

    ,"Tbladdress": {
        "dataSource": "x3",
        "public": true
    }

}
也许我把它放错地方了,我会继续寻找信息,可能我遗漏了什么

这是我使用DB Viewer“看到”的内容…所以你知道我指的是什么

DEV - host:50000/DEV
-schemas
|-AAA
|-BBB
|-DB2X (this is the schema that the error is referring to...but NOT the one specified in the model)
|-DDD
|-LIVE (this is the correct schema)
|--Tables
|--|-TBLA
|--|-TBLADDRESS
|-ZZZ
如果有帮助的话,可以通过手动创建模型或由发现脚本生成的模型来实现

这些是我的配置文件和模型

/common/models/Tbladdress.json

{
    "name": "Tbladdress",
    "options": {
        "idInjection": false,
        "db2": {
            "schema": "LIVE",
            "table": "TBLADDRESS"
        }
    },
    "properties": {
        ...
    }
}
{
    "db": {
        "name": "db",
        "connector": "memory"
    },
    "x3": {
        "name": "x3",
        "connector": "db2",
        "username": "...",
        "password": "...",
        "database": "...",
        "hostname": "...",
        "port":     50000
    }
}
{
    "_meta": {
    ...
    },
    "User": {
        "dataSource": "db"
    },
    "AccessToken": {
        "dataSource": "db",
        "public": false
    },
    "ACL": {
        "dataSource": "db",
        "public": false
    },
    "RoleMapping": {
        "dataSource": "db",
        "public": false,
        "options": {
            "strictObjectIDCoercion": true
        }
    },
    "Role": {
        "dataSource": "db",
        "public": false
    }

    ,"Tbladdress": {
        "dataSource": "x3",
        "public": true
    }

}
/datasources.json

{
    "name": "Tbladdress",
    "options": {
        "idInjection": false,
        "db2": {
            "schema": "LIVE",
            "table": "TBLADDRESS"
        }
    },
    "properties": {
        ...
    }
}
{
    "db": {
        "name": "db",
        "connector": "memory"
    },
    "x3": {
        "name": "x3",
        "connector": "db2",
        "username": "...",
        "password": "...",
        "database": "...",
        "hostname": "...",
        "port":     50000
    }
}
{
    "_meta": {
    ...
    },
    "User": {
        "dataSource": "db"
    },
    "AccessToken": {
        "dataSource": "db",
        "public": false
    },
    "ACL": {
        "dataSource": "db",
        "public": false
    },
    "RoleMapping": {
        "dataSource": "db",
        "public": false,
        "options": {
            "strictObjectIDCoercion": true
        }
    },
    "Role": {
        "dataSource": "db",
        "public": false
    }

    ,"Tbladdress": {
        "dataSource": "x3",
        "public": true
    }

}
/model config.json

{
    "name": "Tbladdress",
    "options": {
        "idInjection": false,
        "db2": {
            "schema": "LIVE",
            "table": "TBLADDRESS"
        }
    },
    "properties": {
        ...
    }
}
{
    "db": {
        "name": "db",
        "connector": "memory"
    },
    "x3": {
        "name": "x3",
        "connector": "db2",
        "username": "...",
        "password": "...",
        "database": "...",
        "hostname": "...",
        "port":     50000
    }
}
{
    "_meta": {
    ...
    },
    "User": {
        "dataSource": "db"
    },
    "AccessToken": {
        "dataSource": "db",
        "public": false
    },
    "ACL": {
        "dataSource": "db",
        "public": false
    },
    "RoleMapping": {
        "dataSource": "db",
        "public": false,
        "options": {
            "strictObjectIDCoercion": true
        }
    },
    "Role": {
        "dataSource": "db",
        "public": false
    }

    ,"Tbladdress": {
        "dataSource": "x3",
        "public": true
    }

}

…标题…

{
    "date": "Sun, 18 Feb 2018 05:20:36 GMT",
    "x-content-type-options": "nosniff",
    "x-download-options": "noopen",
    "x-frame-options": "DENY",
    "content-type": "application/json; charset=utf-8",
    "transfer-encoding": "chunked",
    "connection": "keep-alive",
    "access-control-allow-credentials": "true",
    "vary": "Origin, Accept-Encoding",
    "x-xss-protection": "1; mode=block"
}
使用:

环回cli v3以生成express应用程序

loopback-connector-db2连接到db2v10

节点v8.9.2

JSON依赖项如下所示(如前所述,这是一个默认安装,添加了一个模型,以查看是否可以让它工作)

},


是的,当我在数据发现中指定“活动”模式时,DB2连接器工作得很好,但当我使用API时,它似乎不工作。我不知道是连接器还是环回应用程序。

对于
loopback-connector-db2
,必须在
datasources.json
配置文件中定义
SCHEMA

{
  "x3": {
    "name": "x3",
    "connector": "db2",
    "username": "...",
    "password": "...",
    "database": "...",
    "hostname": "...",
    "port":     50000
  },
  "x3Live": {
    "name": "x3Live",
    "connector": "db2",
    "schema": "LIVE",
    "username": "...",
    "password": "...",
    "database": "...",
    "hostname": "...",
    "port":     50000
  }
}

不幸的是,您需要创建一个新的数据源(例如,
x3Live
)。对于使用
DB2X
模式的模型,使用旧的
x3
数据源;对于使用
LIVE
模式的模型,使用新的
x3Live
数据源。

它可能有助于枚举您正在使用的所有软件组件及其版本(所有层)。特别是,您使用的是loopback-connector-db2吗?因为它支持“schema”连接器属性。@mao-已添加。thx.在datasources.json中,对于源代码x3,您是否尝试过
“schema”:“LIVE”、
?环回API的内容是否记录为完全支持多模式?@mao-我确实尝试了datasources.json中的“schema”:“LIVE”,用于源x3-行为没有变化-相同错误。-我不知道文档中是否有充分的“多模式感知”——但文档中提到了模型差异,并使用“选项模式…”为Oracle定义模型。。。所以我假设我想我真的在寻找对DB2DB使用环回的人。我认为/希望接手该项目的IBM人员将使用他们自己的产品…而DB2需要模式。。所以我肯定这可能是我做错了什么。