mysql - Node 、Sequelize、同步模型、混合力 : true/false

标签 mysql node.js model sequelize.js

我(再次)感到困惑。

在定义数据库(MySQL)表时,使用 Sequelize,我想做一个 sync(forced:true),删除/创建表。到目前为止,一切都很好。

现在我对我的 user 表很满意,并且不想在每次运行时删除它,同时继续定义其他表。

所以,我想在用户选项上设置一个标志,sync: {forced: false}

module.exports = (sequelize, DataTypes) => {
  let Schema = sequelize.define(
    "user",
    {
      id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
      },
      BlaBla:{}
    },
    { // options
      sync: {force: false},
      freezeTableName: true,
      timestamps: true
    });
  return Schema;
};

这不起作用。每次运行时都会删除/创建表。

继续定义我的公司表。

module.exports = (sequelize, DataTypes) => {
  let Schema = sequelize.define(
    "company",
    {
      id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
      },
      BlaBla:{}
    },
    { // options
      sync: {force: true},
      freezeTableName: true,
      timestamps: false
    });
  return Schema;
};

问题

  • 如何根据 sequelize.define 选项有选择地同步表?

最佳答案

不支持在 sequelize.define() 中选择性同步。请参阅Model Definition Configuration了解详情。在项目的其他地方,您必须调用 sequelize.sync({force: true}) 来同步所有模型。您应该首先纠正这个问题,因为它会强制所有模型同步。

修复该问题后,您有几个选择:

1:继续使用迁移。对架构的每次添加或更改都会在迁移中捕获,因此您可以推出每个更改,而无需重新同步其他更改。 请参阅http://docs.sequelizejs.com/manual/migrations.html

2:按照您的建议单独同步每个表。您需要分别为每个模型调用 sync() 方法,例如:

const user = require('./user');
const company = require('./company');
company.sync();
compant.sync({force:true});

这对于早期开发可能是实用的,但随着项目的进展并开始发布,迁移应该是您选择推出架构更改的方法。

参见http://docs.sequelizejs.com/manual/models-definition.html#database-synchronization

关于mysql - Node 、Sequelize、同步模型、混合力 : true/false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55826057/

相关文章:

mysql - SQL 内连接表

javascript - 使用 PDF.js 从带有 node.js 的 url 读取 pdf

node.js - Docker 容器内对 Node.JS 应用程序的外部访问

codeigniter - 如何将数据从 Controller 传递到 CI 中的 View

asp.net-mvc - MvcMailer:通过模型在 View 中获取用户输入,然后将其插入邮件

java - 多次插入加速

php - 在 Laravel 5 中的选择查询中使用属性值

php - 为多个 (128) 数据库值创建 (PHP) 重定向功能的有效方法

javascript - Firebase功能上的"Error: Client network socket disconnected before secure TLS connection was established"

database-design - 关系设计场景: restrict children relations