是否可以使用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.
当然,我可以删除所有相关文件.然后我逐个添加每个迁移,在每个迁移之间运行"所有"迁移.但这似乎是野蛮的.
为了在一个干净的环境中开始为 Web 应用程序开发内容,我希望能够从现有数据库中检索一些数据(假设每个表的前 10 行)以便为每个表创建一个 sequelize 种子文件. 然后就可以将带有这些数据的空数据库播种到相应的模型和迁移中。
我发现了一个名为的工具sequelize-auto,它似乎可以很好地从现有数据库生成模型文件(请注意尚未拥有例如 uses.js 模型;它将被覆盖!):https : //github.com/sequelize /sequelize-auto。
此工具将创建模型文件,但不会创建迁移或种子文件。
有没有办法从现有数据库构建种子文件?
我正在使用 Sequelize 进行迁移。如果迁移up方法引发错误,则迁移不会在数据库中记录为已完成。因此,如果我运行db:migrate:undo,它会down在之前(和工作中)的迁移上运行。结果,我执行了一半的迁移,其中它的架构保留在数据库中,因为downSequelize 永远不会运行相应的方法。所以,我需要以某种方式强制down运行一个方法(我没有看到一个选项)。或者,每次运行失败的迁移时,我都需要手动清理数据库,这对于我不断进行试验和错误的复杂迁移来说可能是一个真正的痛苦。有没有更简单的方法来做到这一点?
我正在尝试使用db:migrate函数迁移数据库,但是打印出错误:
错误:无法读取未定义的属性“替换”
我在 GitHub 上提到了针对此错误的其他解决方案,但都没有解决问题。我正在使用 sequelize-cli 执行迁移。
这是我的模型:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Containers', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING
},
userId: {
type: Sequelize.INTEGER,
references: "Users",
refereceKey: "id",
onUpdate: "cascade",
onDelete: "cascade",
},
type: {
type: Sequelize.STRING
},
detail: {
type: Sequelize.INTEGER
},
checkin: {
type: Sequelize.DATE
},
checkout: {
type: Sequelize.DATE
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: …Run Code Online (Sandbox Code Playgroud) foreign-keys associations node.js sequelize.js sequelize-cli
我一直在搜索 Sequelize 文档和论坛以寻找正确的语法,看来我的做法是正确的,但由于某种原因,密码字段仍在响应有效负载中返回...
以下链接显示了我在 Sequelize 3.11 版中添加的属性排除语法:https : //github.com/sequelize/sequelize/issues/4074
有谁知道我在这里可能会错过什么?下面是语句中的Create方法和控制台日志Insert。
Create 方法
async create(req, res) {
try {
let user = await User.create({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password
}, {
attributes: {
exclude: ['password']
}
});
console.log("USER: ", user);
res.status(201).send(user.toJSON());
}
catch (error) {
res.status(500).send(error)
};
Run Code Online (Sandbox Code Playgroud)
}
控制台日志
执行(默认):INSERT INTO "Users" ("id","firstName","lastName","email","password","createdAt","updatedAt") VALUES (DEFAULT,'James','Martineau' ,'test@gmail.com','$2b$10$7ANyHzs74OXYfXHuhalQ3ewaS4DDem1cHMprKaIa7gO434rlVLKp2','2019-02-28 15:18:15.856 +00:00','2019:05:2018 ) 返回 *;
用户:用户{ dataValues:{ id:6,名字:'James',姓氏:'Martineau',电子邮件:'test@gmail.com',密码:'$2b$10$7ANyHzs74OXYfXHuhalQ3ewaS4DDem1cHMprKaIa7gO434rlVLKp20',updated :18:15.856Z, createdAt: 2019-02-28T15:18:15.856Z }...
我似乎无法弄清楚如何使用 Sequelize 播种 ARRAY(ENUM)。当我通过我的应用程序注册用户时,我可以很好地创建一个新用户,但是当我在种子文件中使用 queryInterface.bulkInsert 时,我得到:
ERROR: column "roles" is of type "enum_Users_roles"[] but expression is of type text[]
这是我的代码:
return queryInterface.bulkInsert('Users', [
{
email: faker.internet.email(),
roles: ['user'],
password: "hash",
public_id: faker.random.uuid(),
created_at: new Date(),
updated_at: new Date()
}
]);
Run Code Online (Sandbox Code Playgroud)
这是我的用户迁移文件:
return queryInterface.createTable('Users', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
email: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING,
allowNull: false
},
roles: {
type: Sequelize.ARRAY(Sequelize.ENUM({
values: ['user', 'setter', 'admin']
})),
allowNull: false …Run Code Online (Sandbox Code Playgroud) 我现在一直在努力争取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) 我试图将Sequelize js与Serverless结合使用,它来自传统的服务器背景,我对在何处/如何运行数据库迁移感到困惑。
是否应该为运行迁移创建专用功能,或者是否还有其他运行迁移的方法?
migration sequelize.js serverless-framework sequelize-cli serverless-architecture
在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/used:here。
在同一页面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作为参数会以某种方式使这失败?
我有下面的代码,但遇到了问题。我正在尝试将images表格包括在内...
order和之间已经存在关系images,但我不知道为什么它显示以下错误:
Unhandled rejection SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'images.imageable' in 'on clause'
Run Code Online (Sandbox Code Playgroud)
下面的代码:
models.Order.findOne({
where: {
id: req.params.orderId
},
attributes: ['id', 'comment', 'rating', 'orderDescription', 'userLat', 'userLng',
'orderStatus', 'providerId', 'isUsingBalance', 'userId', 'serviceId',
'createdAt', 'updatedAt', 'ticketNumber', 'orderScheduledDate', 'promoId', 'paymentMethodId',
[sequelize.Sequelize.fn('date_format', sequelize.Sequelize.col('orderScheduledDate'), '%Y-%m-%D %h:%i'), 'orderScheduledDateToEdit']
],
include: [{
model: models.Comment,
include: [{
model: models.User,
attributes: ['firstName', 'lastName', 'id']
}]
},
{
model: models.Provider,
attributes: ['id', 'userId'],
include: [{
model: models.User,
attributes: ['id', 'firstName', 'lastName', 'phoneNumber']
},
{
model: …Run Code Online (Sandbox Code Playgroud) sequelize-cli ×10
sequelize.js ×8
node.js ×6
javascript ×3
postgresql ×2
associations ×1
foreign-keys ×1
migrate ×1
migration ×1
mysql ×1
orm ×1
sql ×1