如何在 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 中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sequelize 中创建关联

如何在 SEQUELIZE (nodeJS) 中创建触发器?

如何从 JSON 数组在 DB 中创建表以在 Spring Boot 中创建 REST API

如何更改现有表以在 Oracle 中创建范围分区

如何在 Sequelize 中的导入模型中创建自定义方法或函数

如何在 Sequelize 中类型为 TIME 的列中创建位置?