标签: sequelize-cli

如何在Sequelize CLI中添加,删除新列

我刚刚开始使用Sequelize和Sequelize CLI

由于这是一个开发时间,因此经常添加和删除列.将新列添加到现有模型的最佳方法是什么?

例如,我想要一个新的专栏' 完成 '到Todo模型.我将此列添加到models/todo.js.什么是下一步?

我试过了 sequelize db:migrate

不工作:"没有执行迁移,数据库架构已经是最新的."

node.js sequelize.js psql sequelize-cli

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

只从Sequelize ORM获取dataValues

我正在使用sequelize ORM从PSQL DB中获取数据.但是,当我检索某些内容时,会给出一大堆数据.我想要的唯一数据是'dataValues'.当然,我可以使用object.dataValues.但是,还有其他好的解决方案吗?

我正在使用Sequelize 4.10

node.js sequelize.js sequelize-cli

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

如何使用sequelize或sequelize-cli创建带外键的连接表

我正在创建具有多对多关系的两种类型的玩家和团队的模型和迁移.我正在使用sequelize model:create,但是看不到如何指定外键或连接表.

sequelize model:create --name Player --attributes "name:string"
sequelize model:create --name Team --attributes "name:string"
Run Code Online (Sandbox Code Playgroud)

创建模型后,我添加关联.在播放器中:

Player.belongsToMany(models.Team, { through: 'PlayerTeam', foreignKey: 'playerId', otherKey: 'teamId' });
Run Code Online (Sandbox Code Playgroud)

在团队中:

Team.belongsToMany(models.Player, { through: 'PlayerTeam', foreignKey: 'teamId', otherKey: 'playerId' });
Run Code Online (Sandbox Code Playgroud)

然后运行迁移

sequelize db:migrate
Run Code Online (Sandbox Code Playgroud)

有Player和Team的表,但数据库中没有连接表(也没有外键).如何创建外键和连接表?有没有关于如何做到这一点的权威指南?

join foreign-keys node.js sequelize.js sequelize-cli

15
推荐指数
1
解决办法
3593
查看次数

使用 dotenv 均衡迁移

我将我的数据库配置保存在 dotenv 文件中。

我正在使用 sequelize 迁移,它在 config 文件夹中有一个 config.json 文件:

{
 "development": {
    "username": "root",
    "password": null,
    "database": "test",
    "host": "127.0.0.1",
    "dialect": "postgres"
  },
  ....
}
Run Code Online (Sandbox Code Playgroud)

由于我在 dotenv 中有配置,所以我必须将其转换为 js 文件:

require('dotenv').config({ silent: env === 'production'})

const devConfig = {
  dialect: 'postgres',
  host: process.env.DB_HOST || 'localhost',
  port: process.env.DB_PORT || 5432,
  database: process.env.DB_NAME || '',
  username: process.env.DB_USER || 'postgres',
  password: process.env.DB_PASSWORD || '',
  migrationStorageTableName: 'migrations'
};

module.exports = {
  development: devConfig,
  production: devConfig
};
Run Code Online (Sandbox Code Playgroud)

但是如何运行配置不是 JSON 的迁移?

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

json node.js sequelize.js sequelize-cli

12
推荐指数
4
解决办法
8359
查看次数

收到错误:未知的authenticationOk消息typeMessage {名称:'authenticationOk',长度:23}

我已经在Windows 10中安装了Postgres 13。在项目的环境文件中配置了所有正确的凭据。该项目使用以下依赖项,并在 ubuntu 中创建。

"pg": "^7.4.3",
"pg-hstore": "^2.3.2",
"sequelize": "4.38.0",
"sequelize-cli": "^6.2.0"
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 Windows 中设置它。并且在 Windows 10 中出现以下错误。

Error: Unknown authenticationOk message typeMessage { name: 'authenticationOk', length: 23 }
Run Code Online (Sandbox Code Playgroud)

当我点击 npx sequelize db:migrate 终端来迁移数据库中的表时。

postgresql node.js sequelize.js sequelize-cli postgresql-13

10
推荐指数
1
解决办法
9158
查看次数

如何通过Sequelize CLI将主键类型设置为UUID

我正在使用此命令通过Sequelize CLI创建数据库模型:

sequelize model:create --name User --attributes "firstname:string, lastname:string"
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
      },
      firstname: {
        type: Sequelize.STRING
      },
      lastname: {
        type: Sequelize.STRING
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: function(queryInterface, Sequelize) {
    return queryInterface.dropTable('Users');
  }
};
Run Code Online (Sandbox Code Playgroud)

如图所示,主键设置为integer.

有没有办法默认使用CLI UUID

sequelize-cli

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

Sequelize迁移应该更新模型文件吗?

Sequelize迁移是否应该使您的模型文件与您的数据库保持一致?

我使用sequelize cli来引导一个简单的项目并创建一个模型node_modules/.bin/sequelize model:generate --name User --attributes email:string.我没有问题地迁移了这个.

然后,我创建了以下迁移文件,以向用户电子邮件属性添加notNull约束.

updateEmail迁移

const models = require("../models")

module.exports = {
  up: (queryInterface, Sequelize) => {
      return queryInterface.changeColumn(models.User.tableName, 'email',{
        type: Sequelize.STRING,
        allowNull: false,
      });
    },

  down: (queryInterface, Sequelize) => {
      return queryInterface.changeColumn(models.User.tableName, 'email',{
        type: Sequelize.STRING,
      });
    },
};
Run Code Online (Sandbox Code Playgroud)

更新了数据库模式以添加约束,但模型文件没有.有没有办法在进行迁移时自动更新模型文件?

sequelize.js sequelize-cli

9
推荐指数
1
解决办法
4879
查看次数

在我自己的文件夹结构中的 Sequelize 中的迁移

我是新手Sequelize,我当前的项目要求我将它与迁移一起使用。我熟悉迁移他们做什么以及如何。我来自Django后台,其中每个子应用程序在同一文件夹中都有模态、视图、api、url 和迁移。我喜欢这种结构,并希望在我的 nodejs 应用程序中保持相同。我想把一个功能放在一个地方。这对我来说更有意义。

我的结构

|---api
     |---user
     |    |--- api.js
     |    |--- utils.js
     |    |--- models.js
     |    |--- index.js
     |    |--- migrations
     |            |--- xxx123-migration.js
     |            |--- xxx1235-migration.js
     |---payment
          |--- api.js
          |--- utils.js
          |--- models.js
          |--- index.js
          |--- migrations
                  |--- xxx123-migration.js
                  |--- xxx1235-migration.js
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我不知道如何Sequelize-cli指向我的文件夹并查找要生成和运行的迁移。

Sequelize-cli 为我不想遵循的模型、配置、种子等生成自己的文件夹。

任何帮助表示赞赏。

javascript node.js sequelize.js sequelize-cli

9
推荐指数
1
解决办法
6414
查看次数

仅运行下一个迁移文件

是否可以使用sequelize-cli仅运行下一个迁移文件?

我一直在浏览cli的文档和帮助部分,它似乎不是这样的功能.

例如,运行sequelize db:migrate:status命令时我有以下内容;

Loaded configuration file "config/config.js".
Using environment "development".
up   20170301090141-create-something.js
up   20170301133113-create-else.js
up   20170301133821-Update-some-stuff.js
up   20170301135339-create-some-model.js
up   20170307152706-update-some-stuff-two.js
down 20170316142544-create-an-index.js
down 20170421112638-do-some-refactor.js
Run Code Online (Sandbox Code Playgroud)

我想只运行20170316142544-create-an-index.js.

当然,我可以删除所有相关文件.然后我逐个添加每个迁移,在每个迁移之间运行"所有"迁移.但这似乎是野蛮的.

migrate sequelize-cli

8
推荐指数
3
解决办法
3636
查看次数

在 Node 14 中使用 sequelize-cli 类型:module

我正在尝试使用Node v14.3和来设置项目sequelize

我不想使用babel-register. 而不是我"type": "module"在我的设置中设置package.json并使用所有 ES6 - ES11 开箱即用的功能。

我还想sequelize-cli用于设置和应用迁移。除了以下命令外,一切正常:

& sequelize db:migrate

Sequelize CLI [Node: 14.3.0, CLI: 5.5.1, ORM: 5.21.11]

Loaded configuration file "config/config.json".
Using environment "development".
== 20200530214311-create-user: migrating =======

ERROR: Must use import to load ES Module: /home/kasheftin/work/tests/chai-http-publication/migrations/20200530214311-create-user.js
require() of ES modules is not supported.
require() of /home/kasheftin/work/tests/chai-http-publication/migrations/20200530214311-create-user.js from /home/kasheftin/.nvm/versions/node/v14.3.0/lib/node_modules/sequelize-cli/node_modules/umzug/lib/migration.js is an ES module file as it is a .js file whose nearest parent package.json …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js sequelize-cli es6-modules

8
推荐指数
1
解决办法
1823
查看次数