标签: sequelize-cli

序列化CLI找不到环境变量

我正在尝试使用Sequelize CLI工具运行数据库迁移,但是遇到一个问题,该工具未处理我的ENV变量。在github存储库中,它说在版本2.0.0(我在2.4.0中)中,您可以config/config.js像这样直接访问ENV变量process.env.DB_HOSTNAME,但是我收到一条错误消息,指示未传递任何值来自变量

错误:

Unable to connect to database: SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

config.js:

module.exports = {
    "development": {
        "username": process.env.LOCAL_USERNAME,
        "password": process.env.LOCAL_PASSWORD,
        "database": process.env.LOCAL_DATABASE,
        "host": "127.0.0.1",
        "dialect": "mysql",
        "migrationStorageTableName": "sequelize_meta"
    },
}
Run Code Online (Sandbox Code Playgroud)

.env:

LOCAL_DATABASE="db_name"
LOCAL_USERNAME="root"
LOCAL_PASSWORD="test"
Run Code Online (Sandbox Code Playgroud)

sequelize.js sequelize-cli

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

Sequelize + sequelize cli 播种大量随机数据

在 node/sequelize cli 中为两个单独的表和连接表插入数据的最佳方法或任何方法是什么

即我有一个地址表,我添加了这个

const faker = require('faker');
const models = require('./server/db/sequelize/models');
const States = models.States;
const Addresses = models.Addresses;

module.exports = {
  up: (queryInterface) => {

  return Promise.all([
    for (let i = 0; i < 1000; i++) {
      Addresses.create({
        streetName: faker.address.streetAddress(),
        streetNameAlt: faker.address.streetAddress(),
        zipCode: faker.address.zipCode(),
        town: faker.address.county(),
        city: faker.address.city(),
        stateId: id,
        addressTypeId: 1,
        createdAt: faker.date.recent(),
        updatedAt: faker.date.recent(),
      });
    }
  },

  down: (queryInterface) => {
      return queryInterface.bulkDelete('Addresses', null, {});
  }
};
Run Code Online (Sandbox Code Playgroud)

然而,当我生成一个用户时,我想从我的地址表中选择一个随机地址作为 addressId 并创建一个联合记录

IE

const faker = require('faker'); …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js sequelize-cli

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

顺序选择并包含另一个表别名

我正在使用sequelize来访问一个postgres数据库,并且我想查询一个城市,例如包括“ Building”表,但是我想将输出重命名为“ buildings”并返回http响应,但是我遇到了这个错误:

{SequelizeEagerLoadingError:建筑使用别名与城市相关联。您已包括一个别名(建筑物),但与您的关联中定义的别名不匹配。

    City.findById(req.params.id,{
      include: [
        {
          model: Building, as: "buildings"
        }
      ]
    }).then(city =>{
      console.log(city.id);
         res.status(201).send(city);
    }) .catch(error => {
     console.log(error);
     res.status(400).send(error)
   });
Run Code Online (Sandbox Code Playgroud)

城市模型

            const models = require('../models2');
            module.exports = (sequelize, DataTypes) => {
              const City = sequelize.define('city', {
              name: { type: DataTypes.STRING, allowNull: false },
                status: { type: DataTypes.INTEGER, allowNull: false },
                latitude: { type: DataTypes.BIGINT, allowNull: false },
                longitude: { type: DataTypes.BIGINT, allowNull: false },

              }, { freezeTableName: true});
              City.associate = function(models) {
                // associations can …
Run Code Online (Sandbox Code Playgroud)

postgresql node.js sequelize.js sequelize-cli sequelize-typescript

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

启动新的 Sequelize 后端但无法连接到 SQLite DB

我有一个新的 app.js 的最基本的框架,在节点中设置了sequelize 和express。每当我运行该项目时,我都会得到:

{ Error: SQLITE_CANTOPEN: unable to open database file errno: 14, code: 'SQLITE_CANTOPEN' }

我已经四处寻找解决方案,但根据我发现的其他帖子,我没有使用其他技术,例如电子,这些技术似乎会引起问题。我也尝试了将我的database.sqlite3从根目录移动到它自己的文件夹中的建议,但这没有帮助。

我的 app.js 看起来仍然像一个样板。我真的没有做太多事情,只是尝试在创建模型并使用sequelize-cli 迁移后测试连接。

const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');

//Database Connection
const db = require('./config/database');

const Sequelize = require("sequelize");

const sequelize = new Sequelize({
  dialect: "sqlite",
  storage: "path/to/database.sqlite"
});

//Test the DB Connection
sequelize.authenticate()
  .then(() => console.log('Database Connected'))
  .catch(err => console.log('Error: ', err))



//Server
const app = express()

app.get('/', (req, res) => res.send('HELLO WORLD'))

const …
Run Code Online (Sandbox Code Playgroud)

sqlite node.js sequelize.js sequelize-cli

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

如何获取过去 7 天的所有记录 sequelize

我正在尝试使用 sequelize 从 mysql 数据库中获取所有记录,并且尝试了以下方法:

shops.findAndCountAll({
  where: {
    createdAt: {
      [Op.gte]: moment().subtract(7, 'days').toDate()
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

当我使用它时,出现错误: ReferenceError: moment is not defined

所以我尝试了这种方法:

shops.findAndCountAll({
  where: {
    createdAt: {
      [Op.gte]: Sequelize.literal('NOW() - INTERVAL "7d"'),
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

code: 'ER_PARSE_ERROR',
    errno: 1064,
    sqlState: '42000',
    sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to 

your MySQL server version for the right syntax to use near '' at line 1",
        sql: "SELECT count(*) AS `count` FROM `shop` …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js sequelize-cli

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

自定义查询sequelize种子

任何人都知道如何在sequelize seeder上自定义选择查询

我尝试了两种方法,但没有一项工作

第一次尝试

  up: function(queryInterface, Sequelize) {
    return queryInterface.sequelize.query(
      'SELECT * FROM "Users" WHERE username = "admin"',
      { type: queryInterface.sequelize.QueryTypes.SELECT }
    ).then(function(users) {});
    },
Run Code Online (Sandbox Code Playgroud)

然后出现错误

SequelizeDatabaseError: column "admin" does not exist
Run Code Online (Sandbox Code Playgroud)

我不明白为什么admin在这里?

第二次尝试

return queryInterface.sequelize.query('SELECT * FROM "Users" WHERE username = :admin', {
  replacement: {
    admin: 'admin'
  },
  type: queryInterface.sequelize.QueryTypes.SELECT
}).then(function(users) {
});
Run Code Online (Sandbox Code Playgroud)

发生以下错误

SequelizeDatabaseError: syntax error at or near ":"

第三次尝试

return queryInterface.sequelize.query(
  'SELECT * FROM "Users" WHERE username = ' admin '',
  {type: queryInterface.sequelize.QueryTypes.SELECT})
.then(function(users) { }) …
Run Code Online (Sandbox Code Playgroud)

postgresql sequelize.js postgresql-9.4 sequelize-cli

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

顺序迁移:关系&lt;table&gt;不存在

我正在通过Author hasMany Books示例进行工作,并尝试运行sequelize-cli迁移,但是在运行以下迁移时遇到以下问题:

ERROR: relation "authors" does not exist
Run Code Online (Sandbox Code Playgroud)

这是创建作者的第一个迁移:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Authors', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      firstName: {
        type: Sequelize.STRING
      },
      lastName: {
        type: Sequelize.STRING
      },
      dateOfBirth: {
        type: Sequelize.DATEONLY
      },
      dateOfDeath: {
        type: Sequelize.DATEONLY
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Authors');
  }
};
Run Code Online (Sandbox Code Playgroud)

第二次迁移创建一本书: …

postgresql sequelize.js sequelize-cli

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

使用 sqlite3 进行 Sequelize 不会创建数据库

你能帮我解决这个问题吗?我将 sqlite3 与 sequelize npm 包一起使用。运行迁移后,我在控制台中没有看到错误,但也没有看到任何数据库文件。我也可以一次又一次地运行迁移,它看起来不像是正确的行为。这是我的/config/config.js文件:

const path = require('path');

module.exports = {
    test: {
        username: 'root',
        password: 'root',
        database: path.join(__dirname, '..', 'database_test.sqlite'),
        host: 'localhost',
        dialect: 'sqlite',
        logging: console.log,
        operatorsAliases: false
    }
};
Run Code Online (Sandbox Code Playgroud)

这是迁移/XXXXXXXXXXXXXX-create-appeal.js文件:

'use strict';

module.exports = {
    up: (queryInterface, Sequelize) => queryInterface.createTable('appeals', {
        appealId: {
            allowNull: false,
            primaryKey: true,
            type: Sequelize.UUID
        },
        name: {
            allowNull: false,
            type: Sequelize.STRING
        },
        description: {
            type: Sequelize.STRING(511)
        },
        createdAt: {
            allowNull: false,
            type: Sequelize.DATE
        },
        updatedAt: {
            allowNull: …
Run Code Online (Sandbox Code Playgroud)

sqlite node.js sequelize.js sequelize-cli

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

如何使用sequalize-cli删除迁移

我手动删除了迁移文件名20171125081136-create-task.js

删除迁移文件后,我运行了此命令

db:migrate:undo:all
Run Code Online (Sandbox Code Playgroud)

运行此命令时,终端出现错误: ERROR: Unable to find migration: 20171125081136-create-task.js

由于此错误,我被卡住了,无法撤消存在的其他迁移文件。

sequelize.js sequelize-cli

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

将sequelize-cli应用程序部署到heroku DATABASE_URL问题

我正在使用续集迁移。这是我的 config.js:

require('dotenv').config()

module.exports = {
  development: {
    database: process.env.DEV_DATABASE,
    host: process.env.DEV_HOST,
    dialect: 'postgres'
  },
  test: {
    database: process.env.TEST_DATABASE,
    host: process.env.TEST_HOST,
    dialect: 'postgres'
  },
  production: {
    database: process.env.DATABASE_URL,
    dialect: 'postgres'
  },
}
Run Code Online (Sandbox Code Playgroud)

当我部署到 heroku 并运行时:

heroku run npx sequelize-cli db:migrate
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Loaded configuration file "config/config.js".
Using environment "production".

ERROR: connect ECONNREFUSED 127.0.0.1:5432
Run Code Online (Sandbox Code Playgroud)

我尝试将我的配置更改为use_env_variable: DATABASE_URLError reading "config/config.js". Error: ReferenceError: DATABASE_URL is not defined

如果我console.log(process.env.DATABASE_URL)得到类似的东西:

postgres://bczwqcbnwftivi:80bbc89546c0953e0ffd221a950cac249d25d4ef1812127054af7c2f504b2c39@ec2-54-225-205-79.compute-1.amazonaws.com:5432/d8gsvl0n8qilcs
Run Code Online (Sandbox Code Playgroud)

heroku sequelize.js sequelize-cli

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

typescript 无法识别 .sequelizerc 文件

我有这个 .sequelizerc 文件:

\n\n
const path = require('path');\n\nmodule.exports = {\n  config: path.resolve('.', 'src/config/sequelizeCLIConfig.json'),\n  'migrations-path': path.resolve('.', 'db', 'migrations'),\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我有一个 .ts 文件,它生成名为 的 cli 配置文件generateSequelizeCLIConfig.ts,它执行以下操作:

\n\n
import path from 'path';\nimport fs from 'fs';\nimport config from '../../src/config';\nimport sequelizeRC from '../../.sequelizerc';\n\nconst env = process.env.NODE_ENV || 'development';\n\nconst targetFile = path.resolve(sequelizeRC.config);\n\nconst sequelizeCLIConfig: Record<string, any> = {};\nsequelizeCLIConfig[env] = config.db;\n\nfs.writeFile(targetFile, JSON.stringify(sequelizeCLIConfig, null, 4), err => {\n  if (err) {\n    return console.log(err);\n  }\n\n  console.log('The sequelizeCLI config file was saved at ' + targetFile + '!');\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n …

node.js sequelize.js typescript sequelize-cli sequelize-typescript

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

如何在Sequelize中删除Constraint defaultValue

我正在尝试在 Sequelize 中编写迁移并希望删除 defaultValue 约束。什么是正确的语法?我已经尝试了以下两种方法:

return queryInterface.removeConstraint('Table', 'table_columnName_default')
return queryInterface.removeConstraint('Table', 'columnName_default')
Run Code Online (Sandbox Code Playgroud)

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

0
推荐指数
1
解决办法
3757
查看次数