标签: sequelize-cli

在sequelize种子中查找记录

我一直试图为我的项目写一些种子,但我遇到了一些障碍.

many-to-many与我usersroles桌子有关系.因此,当我播种数据库时,我需要将一个带有正确ID的记录添加到我的连接表中.为了做到这一点,我需要找到用户email和角色,name并得到ids这个问题.我在sequelize网站上找不到任何好的文档.我正在使用sequelize-cli进行播种和迁移.我得到一个参数a queryInterface,但我找不到任何例子或提到这件事实际上可以做什么.只是一些简单的例子让我通过迁移(某种方式)和我能够在谷歌上找到的东西.

我通过使用"肮脏的伎俩"解决了这个问题我会说......

// user_seeds.js
up: function (queryInterface, Sequelize) {
  return queryInterface.bulkInsert(table, [{
    id: 1,
    name: 'John doe',
    email: 'john@doe.com',
    created_at,
    updated_at
}], {});

// roles_seeds.js
up: function (queryInterface, Sequelize) {
  return queryInterface.bulkInsert(table, [{
    id: 1,
    name: 'admin',
    created_at,
    updated_at
  }, {
    id: 2,
    name: 'user',
    created_at,
    updated_at
}]);

//user_roles_seeds.js
up: function (queryInterface, Sequelize) {
    return queryInterface.bulkInsert(table, [{
    employee_id: 1,
    role_id: 1 …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js sequelize-cli

5
推荐指数
2
解决办法
3458
查看次数

Node/Express中的Sequelize - '没有这样的表:main.User`错误

我正在尝试使用Sequelize构建一个简单的Node/Express应用程序,但是当我尝试在我的关系数据库中创建一个新记录时,我收到错误Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: no such table: main.User.基本上,我在Users表中创建一个用户,然后尝试在表中创建一个相关的地址Addresses- 用户已成功创建但在创建地址时失败并出现此错误...其中是main从表名中获取前缀?(下面的完整错误读数)...

首先,这是我的计划的简要介绍......

  • 我的Sequelize版本是Sequelize [Node: 6.8.1, CLI: 2.4.0, ORM: 3.29.0],我使用Sequelize CLI命令sequelize init来设置我项目的这一部分.

  • 我使用SQLite3进行本地开发,并且config/config.json我将开发数据库定义为

    "development": {
        "storage": "dev.sqlite",
        "dialect": "sqlite"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 我的用户迁移:

    'use strict';
        module.exports = {
            up: function(queryInterface, Sequelize) {
                return queryInterface.createTable('Users', {
                    id: {
                        allowNull: false,
                        autoIncrement: true,
                        primaryKey: true,
                        type: Sequelize.INTEGER
                    },
                    first_name: {
                        type: Sequelize.STRING
                    },
                    last_name: {
                        type: Sequelize.STRING
                    },
                    createdAt: {
                        allowNull: false,
                        type: …
    Run Code Online (Sandbox Code Playgroud)

sqlite node.js express sequelize.js sequelize-cli

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

播种时运行 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.sync({ force: true }) 有时不起作用

我正在使用 gulp 任务来迁移数据库。出于测试目的,我使用了不同的数据库。所以我需要完全相同的数据库。我正在尝试使用 sequelize.sync({ force: true }) 但它不起作用。

我在门户模型中有我的所有模型。这是代码:

const models = require('portal-models');
gulp.task('migrate', ['create-database'], (done) => {
  models.sequelize.query('SET FOREIGN_KEY_CHECKS = 0')
  .then(() => models.sequelize.sync({ force: true, alter: true }))
....
....
....
)
Run Code Online (Sandbox Code Playgroud)

使用 Force: true 它应该可以工作,但对我来说,我收到错误,例如 mydatbaseName.tablename 不存在。

我创建了新的测试数据库。我不想在测试数据库中手动创建所有内容,所以我正在使用迁移,但我的 gusse 同步无法正常工作。

谁能告诉我,我应该遵循什么?

提前致谢。

database-migration node.js sequelize.js gulp sequelize-cli

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

Destory 和bulkCreate 上的Sequelize js 事务不回滚

我试图在批量创建/插入新报告之前删除所有报告详细信息。问题是当bulkCreate出现错误时它不会回滚。它应该带回被破坏的report_details,但它不起作用。

我测试此事务代码的方式是插入report_details,然后手动更改一个名称,以便再次插入时会出现列错误。并且事务应该回滚,但实际上report_details被破坏,并且在bulkCreate错误时它不会带回被破坏的report_details,有人可以看一下我的代码。我在谷歌上搜索我的语法是正确的。以及如何在我的机器上测试交易?除了更改列名之外还有其他方法会产生错误吗?

function saveReportsDetails(results) {
db.report_detail.bulkCreate(results.report.objAllReportsDetail);

    return db.snpreq.transaction(t => {
        // transaction block
        return db.report_detail.destroy({
            where: {
                profile_id: results.profile.data[0].id
            }
        }, {
            transaction: t
        }).then(deleted => {
            console.log('*******TRANSACTION DELETED*********');

            return db.twenreport_detail.bulkCreate(results.report.objAllReportsDetail, {
                transaction: t
            }).then(reports_created => {
                console.log('*******TRANSACTION bulk created*********');
            });
        });
    }).then(transaction => {
        console.log('********All Transaction********');
    }).catch(err => {
        console.log('*******ROLL BACK*********');
    });
}
Run Code Online (Sandbox Code Playgroud)

postgresql transactions sequelize.js mean-stack sequelize-cli

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

类型错误:s.replace 不是函数

环境:

  • Postgres:10.2
  • 节点:6.11.0
  • 命令行界面:2.4.0
  • ORM:2.1.3

模型:

'use strict';
module.exports = function(sequelize, DataTypes) {
    var test = sequelize.define('test', {
        id: DataTypes.UUID,
        type: DataTypes.STRING,
        data: DataTypes.JSON,
    }, {
        'createdAt': {
            type: Sequelize.DATE(3),
            defaultValue: Sequelize.literal('CURRENT_TIMESTAMP(3)'),
        },
        'updatedAt': {
            type: Sequelize.DATE(3),
            defaultValue: Sequelize.literal('CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)'),
        },
        classMethods: {
            associate: function(models) {
                // associations can be defined here
            }
        }
    });
    return test;
}
Run Code Online (Sandbox Code Playgroud)

移民:

'use strict';
module.exports = {
    up: function(queryInterface, Sequelize) {
        return queryInterface.addColumn('test', {
            test_col: {
                type: Sequelize.JSONB
            }
        });
    }, …
Run Code Online (Sandbox Code Playgroud)

postgresql sequelize.js sequelize-cli

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

使用sequelize 将 JSON 数据播种到 PostgreSQL 数据库时出错

当我运行sequelize-cli命令时发生sequelize db:seed:all

当我尝试将对象作为 JSON 播种时,出现以下错误:

ERROR: Invalid value { viewId: null,
  dateRanges: [ { startDate: null, endDate: null } ],
  samplingLevel: 'DEFAULT',
  dimensions: [ { name: 'ga:channelGrouping' } ],
  metrics: [ { expression: 'ga:users' } ] }
Run Code Online (Sandbox Code Playgroud)

这是我的模型

module.exports = (Sequelize, DataTypes) => {
  const Report = Sequelize.define('Report', {
    name: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true,
      validate: {
        is: /^[a-z0-9\_\-]+$/i,
      },
    },
    platform: {
      type: DataTypes.STRING,
      allowNull: false,
      validate: {
        is: /^[a-z0-9\_\-]+$/i,
      },
    },
    query: {
      type: DataTypes.JSON, …
Run Code Online (Sandbox Code Playgroud)

postgresql sequelize.js sequelize-cli

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

Sequelize createdAt 和 updatedAt 时间戳错误

我使用 sequelize 创建了一个带有时间戳的表。当我更新表时,它会自动更新时间戳(即 createdAt 和 updatedAt)。但这些时间与我的当地时间不同。如果我使用 moment 像这样转换时区,我附上了 2 个带有模型脚本的屏幕截图,updateddAt: moment().utc(new Date())它工作正常。有没有办法用当前时区自动更新时间戳?

    'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('States', {

      hashCode: {
        type: Sequelize.STRING,
          unique:true,
          autoIncrement:false
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('States');
  }
};
Run Code Online (Sandbox Code Playgroud)

更新表格时 在此处输入图片说明

我在电脑上的当地时间 在此处输入图片说明

timezone timestamp sequelize.js momentjs sequelize-cli

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

Sequelize 中的复合主键

有人可以建议我如何在同一个表中的两列上设置主键。

var relation = {
        'user_id': {
            type: DataTypes.INTEGER
        },
        'organization_id':{
            type: DataTypes.INTEGER
        }
}
Run Code Online (Sandbox Code Playgroud)

我想定义一个主键 primary key (user_id, organization_id)

注意:使用 PostgreSQL

postgresql node.js sequelize.js sequelize-cli

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