Javascript 找不到sequelize n:m关系表

Javascript 找不到sequelize n:m关系表,javascript,postgresql,typescript,sqlite,sequelize.js,Javascript,Postgresql,Typescript,Sqlite,Sequelize.js,我正在使用typescript和sequelize,我有以下表:Prophet、Model和Task,它们彼此之间都有n:m关系,因此sequelize会自动创建另外3个表:modelProphets、modelTasks和prophetTasks。 我为它们中的每一个都提供了一个简单的存储库,模型和任务在repo中有一个额外的功能: public findWithoutProphet(): Promise<any> { const query = `SELECT model

我正在使用typescript和sequelize,我有以下表:Prophet、Model和Task,它们彼此之间都有n:m关系,因此sequelize会自动创建另外3个表:modelProphets、modelTasks和prophetTasks。 我为它们中的每一个都提供了一个简单的存储库,模型和任务在repo中有一个额外的功能:

public findWithoutProphet(): Promise<any> {
    const query = `SELECT models.name FROM models WHERE NOT EXISTS
        (SELECT modelProphets.modelName FROM modelProphets WHERE models.name = modelProphets.modelName);`;
    return this.database.rawQuery(query);
}
我正在对每个存储库函数进行单元测试,但问题是,当我使用sequelize方言“sqlite”运行时,一切正常,但如果我将其更改为本地docker postgres并再次运行,则在查询过程中会抛出一个错误,说“modelProphets”不存在,或者如果我先运行task one而不是model,则会抛出prophetTasks。所有其他回购功能,如创建、删除、更新、查找,一切正常。我甚至用pgAdmin4检查了数据库,所有的关系表都在那里,所以


当sqlite运行正常时,为什么sequelize在postgresql中给我这个错误?每个数据库的自动关系表是否不同?我应该为每个DB Im测试使用不同的存储库吗?

我没有使用sequelize,但是Postgres不能很好地使用大写字母。如果希望Postgres保留名称的大小写,请将表名放在双引号中

引用标识符也会区分大小写,而不使用引号 姓名总是折叠成小写。例如,标识符 PostgreSQL认为FOO、FOO和FOO是相同的,但是FOO FOO和FOO与这三个不同,而且彼此不同。折叠 在PostgreSQL中,将不带引号的名称改为小写与 SQL标准,该标准规定,不带引号的名称应折叠为大写 案例因此,根据 标准。如果你想编写可移植的应用程序,你是 建议总是引用某个特定的名称,或者永远不要引用它


omg,它实际上说,如果没有大写字母,就找不到“ModelPropheties”表,我忘了提到这一点,我认为这与问题无关,但就是这样!谢谢你的帮助!