Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js Sequelize:更新数据库架构_Node.js_Sequelize.js - Fatal编程技术网

Node.js Sequelize:更新数据库架构

Node.js Sequelize:更新数据库架构,node.js,sequelize.js,Node.js,Sequelize.js,在Sequelize中,我有以下模型文件:collection.js 'use strict'; module.exports = function(sequelize, DataTypes) { var Collection = sequelize.define('Collection', { title: DataTypes.STRING, bundleSize: DataTypes.INTEGER }, {

在Sequelize中,我有以下模型文件:collection.js

  'use strict';
    module.exports = function(sequelize, DataTypes) {
      var Collection = sequelize.define('Collection', {
        title: DataTypes.STRING,
        bundleSize: DataTypes.INTEGER
      }, {
        classMethods: {
          associate: function(models) {
            Collection.belongsTo(models.User, {
              onDelete: 'CASCADE',
              foreignKey: {
                allowNull: false,
              }
            })

          }
        }
      });
      return Collection;
    };
我使用的是github上Sequelize提供的express示例

我通过sequelize cli创建了它,然后手动添加了关系。但是现在我无法创建外键。我用的是“同步”和“力等于真”。但我能得到的只是一个包含所有字段的表,但没有关联(外键)。
有没有办法根据模型文件更新数据库模式?或者,我必须手动编辑迁移文件,然后运行迁移?

如果关联选项中未提供foreignKey属性,将自动创建foreignKey。它将由主表名和“Id”后缀组成。在您的情况下,它将显示“Collections”表中的“UserId”字段

集合.belongsTo(models.User{ onDelete:“级联” })

如果要提供自定义外键,则它应该是字符串或带有字段属性的选项对象,其中包含表中列的名称

Collection.belongsTo(models.User, {
          onDelete: 'CASCADE'
          foreignKey: 'myCustomUserId'
        })
我不知道如何将foreignKey表字段名正确地别名为in-app sequelize。以下内容可能就足够了

 User.hasMany(models.Collection, {
          onDelete: 'CASCADE',
          foreignKey: {
            name: 'myCustomForeignKey',
            field: 'my_custom_foreign_key'
          }
        })
 Collection.belongsTo(models.User, {
          onDelete: 'CASCADE',
          foreignKey: {
            name: 'myCustomForeignKey',
            field: 'my_custom_foreign_key'
          }
        })
它将创建自动应用程序内别名“myCustomForeignKey”以及表列“my_custom_ForeignKey”

因此,以下查询应给出相同的结果:

db.Collection.findAll({where: {myCustomForeignKey: 22}})

sequelize.query('select*from collections where my_custom\u foreign\u key=22')

您正在使用什么版本的sequelize查看如何声明关系。