如何在 Sequelize 中创建一个表以使用 Node JS 存储在 Postgresql 中

Posted

技术标签:

【中文标题】如何在 Sequelize 中创建一个表以使用 Node JS 存储在 Postgresql 中【英文标题】:How to Create a table in Sequelize to store in Postgressql with NodeJS 【发布时间】:2018-03-02 15:53:52 【问题描述】:

我是 Postgres 和 Sequelize 的新手,我已成功连接到 DB,试图在 DB 中创建一个表,但我遇到了一个错误,即表名不存在

sequelize.authenticate().then(() => 
  console.log("Success!");
  var News = sequelize.define('likes', 
    title: 
      type: Sequelize.STRING
    ,
    content: 
      type: Sequelize.STRING
    
    , 
     freezeTableName: true
   );
   News.create(
     title: 'Getting Started with PostgreSQL and Sequelize',
     content: 'Hello there'
   );
   News.findAll().then((data) => 
     console.log(data);
   ).catch((err) => 
     console.log(err);
   );
).catch((err) => 
  console.log(err);
); 

哪里出错了?它说错误:关系“喜欢”不存在。任何形式的帮助表示赞赏

【问题讨论】:

【参考方案1】:

Sequelize 仅通过 sync 或迁移创建表。你的模型 News 有一个 sync 方法,当被调用时会做一些事情之一

如果不带参数调用,如果表不存在则创建表

如果像这样调用News.sync( force: true ),它将删除当前表(如果存在)并创建一个新表。

如果像这样调用News.sync( alter: true ),它将添加模型中尚未包含的任何新字段(这是 v4 功能)。

这些技术在快速制作原型时很有用,但最好的解决方案是使用迁移。迁移允许您跟踪跨开发、不同 git 分支和生产对数据库的更改。它是迄今为止最好的解决方案,但需要少量的前期成本和支持。

如果您正在从事黑客马拉松风格的项目,我会选择alter: true,但如果您正在构建一些您将要工作一段时间的东西,那么一定要了解@987654321 @。

【讨论】:

News.sync(force: false).then(function (err) if(err) console.log('An error occur while creating table'); else console.log('Item table created successfully'); ); 上面的评论是我试图在控制台中做的,它打印创建表时发生错误但是表被创建,我也可以插入值。顺便说一下,你能给我一个迁移 API 的简单例子吗 它不会打印出任何错误,它会控制表名“user” 啊,我明白了。 .then 不报告错误。 .then 的参数之一是成功结果。查找错误使用.catch 已使用 catch no errors print 感谢您帮助我,兄弟我是新手来续集想要探索更多所以你能建议我相同的资源

以上是关于如何在 Sequelize 中创建一个表以使用 Node JS 存储在 Postgresql 中的主要内容,如果未能解决你的问题,请参考以下文章