如何解决“未处理的拒绝SequelizeDatabaseError:关系“ ABC”不存在”?

时间:2019-01-07 11:35:07

标签: node.js postgresql sequelize.js

我正在尝试从现有的postgres数据库中获取数据,该数据库中有几个表。与数据库的连接成功完成后,我似乎无法进行任何测试查询,例如

Model.findAll().then(table =>{ console.log(table)}

我尝试将模式名称附加到模型定义中,例如

const Model = sequelize.define('Schema.ABC', { ....}}

引发与标题提示相同的错误

我也尝试过将模式名称附加到查询中,但是会引发语法错误,并且代码无法执行

Model.findAll().then('Schema.ABC' => { console.log(Schema.ABC)}

如果该表确实需要附加模式名称,那么我也想知道如何实现。

下面是我的代码的一部分

const Model = sequelize.define('ABC',{
    CompanyName: Sequelize.STRING,
    createdAt: Sequelize.DATE,
    updatedAt: Sequelize.DATE
},
{
    // tableName: `"Schema"."ABC"`,
    freezeTableName: true
});

...
Model.removeAttribute('id');

Model.findAll().then(ABC => {
    console.log(ABC)
})

1 个答案:

答案 0 :(得分:0)

您应该这样定义架构,使tableName属性不加注释:

const ABC = sequelize.define('ABC',{
    CompanyName: Sequelize.STRING,
    createdAt: Sequelize.DATE,
    updatedAt: Sequelize.DATE
  },
  {
    freezeTableName: true,
    tableName: 'ABC',
  });

并在异步函数中使用它:

async function findAllABC() {
  await ABC.findAll().then((result) => {
    console.log(`The result is: '${result}'`);
  });
}

findAllABC();