Node.js 节点续集迁移/模型是否可以共享相同的代码?

Node.js 节点续集迁移/模型是否可以共享相同的代码?,node.js,sequelize.js,Node.js,Sequelize.js,我是Sequelize的新手,所以请耐心等待 我用Sequelize启动了一个新项目 和迁移,所以我有这样的: 迁移/2015021004840-create-my-user.js: models/myuser.js: 正如您可以看到的表定义 位于移植和模型文件上 我想知道是否有一种分享的方式 密码 我的意思是我不喜欢在两个文件中有逻辑 如果字段发生更改,我必须更新两次 使现代化 下面是严福涛的例子 另一种方式可能更干净 架构/用户 模型/用户 "严格使用",; var Schema=requi

我是Sequelize的新手,所以请耐心等待

我用Sequelize启动了一个新项目 和迁移,所以我有这样的:

迁移/2015021004840-create-my-user.js: models/myuser.js: 正如您可以看到的表定义 位于移植和模型文件上

我想知道是否有一种分享的方式 密码

我的意思是我不喜欢在两个文件中有逻辑 如果字段发生更改,我必须更新两次

使现代化 下面是严福涛的例子 另一种方式可能更干净

架构/用户 模型/用户 "严格使用",; var Schema=require'../schemas/users'; module.exports=函数续集,数据类型{ 返回sequelize.define Schema.name, Schema.definitionDataTypes, { 表名:true, 实例方法:{ 任务:功能{ //如何实现这个方法? } } } ; }; 迁移/20150720184716-users.js
当我开始使用sequelize时,我想知道同样的事情,这里是我的解决方案。我将我的模型定义如下:

module.exports={ def:functionDataTypes{ 返回{ 身份证:{ 类型:DataTypes.INTEGER, 自动递增:真, primaryKey:对 }, 用户名:DataTypes.STRING, 密码:DataTypes.STRING, createdAt:DataTypes.DATE, 更新日期:DataTypes.DATE, } }, 配置:{} }; 其中def定义属性,config是或接受的可选选项对象。我使用以下代码导入它们:

fs.readdirSync\uu dirname+“/PATH/TO/models” .FilterFunction文件{ 返回文件.indexOf'.!==0&&file!==basename; } .forEachfunctionfile{ var name=file.substring0,file.lastIndexOf。, definition=requirepath.join__dirname+'/models',文件; sequelize['import']名称、函数sequelize、数据类型{ 返回sequelize.define 名称 definition.defDataTypes, definition.config ; }; }; 对于迁移,我有一个类似的方法:

常量路径=要求“路径”; module.exports={ up:函数查询接口,续集{ 返回queryInterface.createTable “用户”, requirepath.join_uudirname+/PATH/TO/models',user.js'.defsquelize ; }, 向下:函数查询接口,续集{ 返回queryInterface.dropTable'users'; } };
我也以同样的方式结束了。我更新了帖子。谢谢你的提示和建议feedback@Whisher如果有什么我应该补充,使其符合正确答案的资格,请让我知道。有趣的方法。如何处理诸如添加列之类的变化?我知道这很旧,但通常迁移的要点是,在运行后不会对其进行更改,因此,如果需要向模型中添加字段,可以创建一个新的迁移文件来对数据库进行更改,这样就不会总是对一个模型进行一次迁移。您可以有许多调整表的迁移,模型定义应该是更改的组合。如果您不需要此功能,可以使用sequelize.sync,您的模型将在数据库中指定您的表,而无需迁移。
"use strict";
module.exports = {
  up: function(migration, DataTypes, done) {
    migration.createTable("MyUsers", {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: DataTypes.INTEGER
      },
      first_name: {
        type: DataTypes.STRING
      },
      last_name: {
        type: DataTypes.STRING
      },
      bio: {
        type: DataTypes.TEXT
      },
      createdAt: {
        allowNull: false,
        type: DataTypes.DATE
      },
      updatedAt: {
        allowNull: false,
        type: DataTypes.DATE
      }
    }).done(done);
  },
  down: function(migration, DataTypes, done) {
    migration.dropTable("MyUsers").done(done);
  }
};
"use strict";
module.exports = function(sequelize, DataTypes) {
  var MyUser = sequelize.define("MyUser", {
    first_name: DataTypes.STRING,
    last_name: DataTypes.STRING,
    bio: DataTypes.TEXT
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
      }
    }
  });
  return MyUser;
};
'use strict';

module.exports = {
    name: 'users',
    definition : function(DataTypes)  {
        return {
            id: {
                type: DataTypes.INTEGER,
                autoIncrement: true,
                primaryKey: true
            },
            firstname: {
                type:DataTypes.STRING
            },
            lastname: {
                type:DataTypes.STRING
            },
            email: {
                type: DataTypes.STRING,
                unique: true
            },
            username: {
                type:DataTypes.STRING,
                unique: true
            }
        };
    }
};
'use strict';

    var Schema = require('../schemas/users');

    module.exports = {

        up: function (queryInterface, Sequelize) {
                return queryInterface.createTable(
                Schema.name,
                Schema.definition(Sequelize)
                );
        },

        down: function (queryInterface, Sequelize) {
            return queryInterface.dropTable(Schema.name);
        }

    };