标签: sequelize-cli

Sequelize-CLI播种机 - 无法读取未定义的属性

我现在一直在努力争取db:seed:all一个多小时,慢慢地我对此失去了理智.

我有一个简单的模型:

'use strict';
module.exports = function (sequelize, DataTypes) {
  var Car = sequelize.define('Cars', {
    name: DataTypes.STRING,
    type: DataTypes.INTEGER,
    models: DataTypes.INTEGER
  }, {
      classMethods: {
        associate: function (models) {
          // associations can be defined here
        }
      }
    });
  return Car;
};
Run Code Online (Sandbox Code Playgroud)

这是一个迁移,并转到使用sequelize db:migrate正常的数据库.

接下来我想通过种子文件插入2辆汽车.所以我运行了命令sequelize seed:create --name insertCars 并添加了bulkInsert:

'use strict';

module.exports = {
  up: function (queryInterface, Sequelize) {
    return queryInterface.bulkInsert(
      'Cars',
      [
        {
          name: "Auris",
          type: 1,
          models: 500,
          createdAt: Date.now(), updatedAt: Date.now() …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js sequelize-cli

6
推荐指数
1
解决办法
1814
查看次数

在无服务器项目中如何/在何处运行迁移迁移?

我试图将Sequelize js与Serverless结合使用,它来自传统的服务器背景,我对在何处/如何运行数据库迁移感到困惑。

是否应该为运行迁移创建专用功能,或者是否还有其他运行迁移的方法?

migration sequelize.js serverless-framework sequelize-cli serverless-architecture

6
推荐指数
2
解决办法
1326
查看次数

Sequelize.INTEGER 与 DataTypes.INTEGER

2016 年使用 sequelize ORM 的代码中,我看到使用此模式定义的模型类型:

 module.exports = function(sequelize, DataTypes) {
     const Tasks = sequelize.define("Tasks", {  id: {
       type: DataTypes.INTEGER,
       [ ...etc.]
Run Code Online (Sandbox Code Playgroud)

但是,在当前的续集文档中,您会看到最突出的记录:(Sequelize.INTEGER或其他类型,然后是整数)。同时,在当前的文档中,我DataTypes仍然发现documented/usedhere

在同一页面Sequelize.INTEGER上使用...,仅用于可延期或其他什么?

我试图找出这是否会随着时间的推移而改变,但找不到。

什么时候Sequelize.INTEGER是“当前解决方案”我可以将上面的代码更改为:

module.exports = function(sequelize, Sequelize) {
  const Tasks = sequelize.define("Tasks", {  id: {
    type: Sequelize.INTEGER,
    [ ...etc.]
Run Code Online (Sandbox Code Playgroud)

或者使用Sequelize作为参数会以某种方式使这失败?

javascript orm node.js sequelize.js sequelize-cli

6
推荐指数
1
解决办法
1268
查看次数

如何在Sequelize现有模型中添加列?

我已使用此命令添加了模型和迁移文件

node_modules/.bin/sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string
Run Code Online (Sandbox Code Playgroud)

现在,我想在现有表(模型)中添加一些字段,如性别和年龄。我手动更改了模型并触发了此命令

node_modules/.bin/sequelize db:migrate
Run Code Online (Sandbox Code Playgroud)

但它的回应是“未执行任何迁移,数据库架构已经是最新的。”

User.js

'use strict';
module.exports = (sequelize, DataTypes) => {
  var User = sequelize.define('User', {
    firstName: DataTypes.STRING,
    lastName: DataTypes.STRING,
    email: DataTypes.STRING
  }, {});
  User.associate = function(models) {
    // associations can be defined here
  };
  return User;
};
Run Code Online (Sandbox Code Playgroud)

先感谢您 :)

database orm node.js sequelize.js sequelize-cli

6
推荐指数
3
解决办法
7304
查看次数

播种时运行 sequelize 模型挂钩

我目前正在尝试使用 sequelize 为 postgresql 数据库播种,我在我的模型上声明了钩子,在创建单独的记录(例如测试)时可以正常工作

我的种子文件中的数据是否需要在最终表格中显示,或者我可以在创建时调用钩子吗?

这是我的文件:

/*users-seed.js*/
'use strict'

module.exports = {
  up: function (queryInterface, Sequelize) {
    return queryInterface.bulkInsert('Users', [/*users-data*/])
  },
  down: function (queryInterface, Sequelize) {
    return queryInterface.bulkDelete('Users', null, {})
  }
}
Run Code Online (Sandbox Code Playgroud)

/*user.js*/
module.exports = function (sequelize, DataTypes) {
  let User = sequelize.define('User', {
    /* user attributes */
  }, {
      instanceMethods: {
        hashPassword: function (password) {
          return bcrypt.hash(password, 15)
        },
        hashEmail: function (email) {
          return crypto.createHash('sha256').update(email).digest('hex')
        }
      },
      hooks: {
        beforeCreate: function (user) {
          return user.hashPassword(user.password_digest).then(function (hashedPassword) { …
Run Code Online (Sandbox Code Playgroud)

postgresql orm node.js sequelize.js sequelize-cli

5
推荐指数
1
解决办法
1836
查看次数

如何找到 sequelize 迁移文件?

通过 sequilize-cli 文件结构访问 sequelize 迁移文件有很多帖子。但是,如果我不使用 sequilize-cli,如何找到迁移文件?

node.js sequelize.js sequelize-cli

5
推荐指数
1
解决办法
4625
查看次数

如何通过sequelize queryInterface插入具有关联的行

我正在使用 sequelize cli 和 sequelize 为多对多连接表生成种子文件

在这里,我将用户和集合以及 User_Collections 作为连接表我已经为用户和集合创建了种子文件,但我想为连接表创建种子文件。如何动态访问 User 或 Collection 中行的 id,以便我可以在连接表中插入该值 bulkinsert

用户:



    module.exports = {
      up: (queryInterface, Sequelize) => queryInterface.bulkInsert('Users', [ {
        first_name: 'John',
        last_name: 'Doe',
        email: 'john.doe@gmail.com',
        password: 'testme',
        createdAt: new Date(),
        updatedAt: new Date(),
      }], {}),
      down: (queryInterface, Sequelize) => queryInterface.bulkDelete('Users', null, {}),
    };


收藏



    module.exports = {
      up: (queryInterface, Sequelize) => queryInterface.bulkInsert('Collections', [{
        collection_name: 'Test Collection1',
        createdAt: new Date(),
        updatedAt: new Date(),
      }, {
        collection_name: 'Test Collection2',
        createdAt: new Date(),
        updatedAt: new Date(), …
Run Code Online (Sandbox Code Playgroud)

postgresql node.js sequelize.js sequelize-cli

5
推荐指数
1
解决办法
3999
查看次数

错误:无法解析属性“”:无法读取未定义的属性“dataType”

我正在使用以下 cli 命令创建 document_types 表

sequelize model:create --name User --attributes name:string, username:string, email:string, password:string
Run Code Online (Sandbox Code Playgroud)

sequelize-cli

5
推荐指数
1
解决办法
2731
查看次数

Sequelize addColumn 迁移始终引用公共模式

我有一个 Express 应用程序,其中Sequelize作为 ORM,PostgreSQL作为数据库。数据库的设置方式使得我的应用程序中的每个租户都将具有不同的架构。我的应用程序中存在的迁移文件包含 addColumn/removeColumn 迁移。但是当我运行 npx Sequelize-cli db:migrate 命令时,出现以下错误。

错误:关系“public.table_name”不存在

上述错误仅针对包含 addColumn/removeColumn 迁移的迁移文件引发。另外,我没有提到公共模式(甚至从数据库中删除了公共模式)。有没有办法在 Sequelize 中针对特定模式(例如 test_schema)运行迁移,而无需在迁移文件中硬编码模式名称?

更新#2

'use strict';

module.exports = {
  up: async(queryInterface, Sequelize) => {
    try {
      await queryInterface.addColumn('table_name', 'new_field_name', {
        type: Sequelize.INTEGER
      });
      return Promise.resolve();
    } catch (e) {
      return Promise.reject(e);
    }
  },

  down: async(queryInterface, Sequelize) => {
    try {
      await queryInterface.removeColumn('table_name','new_field_name');
      return Promise.resolve();
    } catch (e) {
      return Promise.reject(e);
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

以上是addColumn迁移的代码。

postgresql node.js express sequelize.js sequelize-cli

5
推荐指数
1
解决办法
1973
查看次数

Sequelize Raw 查询不返回数组有很多

我正在尝试在sequelize 中使用原始sql 查询并拥有此代码。我的表结构是一个有很多连接的external_profile。

const users = await models.sequelize.query("SELECT `External_Profile`.*, AVG(Connections.rating) AS rating, `Connections`.`id` AS `Connections.id`, `Connections`.`known_type` AS `Connections.known_type`, `Connections`.`rating` AS `Connections.rating`, `Connections`.`createdAt` AS `Connections.createdAt`, `Connections`.`updatedAt` AS `Connections.updatedAt`, `Connections`.`UserId` AS `Connections.UserId`, `Connections`.`ExternalProfileId` AS `Connections.ExternalProfileId`, `Connections->User`.`id` AS `Connections.User.id`, `Connections->User`.`first_name` AS `Connections.User.first_name`, `Connections->User`.`last_name` AS `Connections.User.last_name`, `Connections->User`.`email` AS `Connections.User.email`, `Connections->User`.`password` AS `Connections.User.password`, `Connections->User`.`linkedinUrl` AS `Connections.User.linkedinUrl`, `Connections->User`.`createdAt` AS `Connections.User.createdAt`, `Connections->User`.`updatedAt` AS `Connections.User.updatedAt` FROM (SELECT `External_Profile`.`id`, `External_Profile`.`profile_data`, `External_Profile`.`name`, `External_Profile`.`headline`, `External_Profile`.`image`, `External_Profile`.`linkedinUrl`, `External_Profile`.`createdAt`, `External_Profile`.`updatedAt` FROM `External_Profiles` AS `External_Profile`) AS `External_Profile` LEFT OUTER JOIN `Connections` AS `Connections` ON …
Run Code Online (Sandbox Code Playgroud)

mysql node.js express sequelize.js sequelize-cli

5
推荐指数
1
解决办法
1267
查看次数