Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sequelize中模型和迁移定义之间的主要区别是什么?_Javascript_Node.js_Sequelize.js_Umzug - Fatal编程技术网

Javascript Sequelize中模型和迁移定义之间的主要区别是什么?

Javascript Sequelize中模型和迁移定义之间的主要区别是什么?,javascript,node.js,sequelize.js,umzug,Javascript,Node.js,Sequelize.js,Umzug,SQL数据库的一些Sequelize用户通常在早期使用sync({force:true}),然后切换到迁移。我很困惑,因为迁移和模型似乎有着相似的语法,但也有一些差异似乎没有被强烈强调 一些观察结果(可能是错误的): 两者中的选项对象不同:options.index模型中的对象在迁移中不起作用(但在模型中起作用) 使用unique:“somename”的自定义索引名在迁移字段属性中不起作用(但在模型中起作用);但是unique:true在这两种情况下都有效 需要显式创建外键-并且需要在迁移中设

SQL数据库的一些Sequelize用户通常在早期使用
sync({force:true})
,然后切换到迁移。我很困惑,因为迁移和模型似乎有着相似的语法,但也有一些差异似乎没有被强烈强调

一些观察结果(可能是错误的):

  • 两者中的选项对象不同:
    options.index
    模型中的对象在迁移中不起作用(但在模型中起作用)
  • 使用
    unique:“somename”
    的自定义索引名在迁移字段属性中不起作用(但在模型中起作用);但是
    unique:true
    在这两种情况下都有效
  • 需要显式创建外键-并且需要在迁移中设置
    引用
    (但在模型中,hasMany/belongs会自动生成外键字段和外键引用)
  • id
    createdAt
    updatedAt
    必须在迁移中手动创建,但不能在模型中创建
最后两个是有意义的,因为它描述了迁移责任(设置db模式)与模型-但是对于类似的项目,迁移支持的内容/工作方式似乎有所不同,
sync
选项加剧了我的困惑

一些问题:

  • 在Sequelize中,迁移和模型之间需要记住的主要区别是什么(而不是两者之间的一般原理)?模型中的哪些选项(使用
    sync
    选项时)在迁移中起作用
  • 当从
    sync
    切换到离散迁移时,其他人是否只是将模型文件复制到迁移中?你是否删除了一些只在模型中有效的无关信息?仅适用于迁移

Sync在创建与主键、约束、关联和索引相关的模式时,肯定会做出一些假设。所有这些假设/便利都需要在迁移中明确声明。我还希望得到更详细的答案。据我所知,迁移文件将与数据库通信,只有与数据库相关的东西才可用。另一方面,该模型在将数据发送到数据库之前几乎充当中间件。所以getter和setter不会对迁移文件产生任何影响,但会对模型文件产生影响。