Sequelize 不会将值插入到新添加的列中
Posted
技术标签:
【中文标题】Sequelize 不会将值插入到新添加的列中【英文标题】:Sequelize doesn't insert values into newly added columns 【发布时间】:2019-05-05 16:49:24 【问题描述】:我有Users
表,我通过新的迁移文件向表中添加了两个新列email
和firstName
sequelize db:create --name add_columns_to_users
add_columns_to_users.js:
'use strict';
module.exports =
up: (queryInterface, Sequelize) =>
return [
queryInterface.addColumn(
'Users',
'email',
type: Sequelize.TEXT,
),
queryInterface.addColumn(
'Users',
'firstName',
type: Sequelize.TEXT,
)
];
,
down: (queryInterface, Sequelize) =>
;
用户/schema.graphql:
type User
id: ID!
username: String
email: String
firstName: String
type Query
users(id: ID): [User]
input CreateUserInput
username: String!
email: String!
firstName: String!
type Mutation
createUser (input: CreateUserInput!): User
我的用户突变中有以下内容:
Mutation:
createUser(root, input, context)
models.User.create(input).then( user =>
console.log(user);
);
这是我要发送的输入:
'username': profile.username,
'email': profile.email,
'firstName': profile.firstName
在我的日志中,我看到值没有被插入到新列 email
和 firstName
中,而对于像“用户名”等旧列没有问题。
INSERT INTO "Users" ("id","username","createdAt","updatedAt") VALUES
(DEFAULT,'Sxxxxh RxxxF','2018-12-04 08:34:11.974 +00:00','2018-12-04 08:34:11.974 +00:00')
RETURNING *;
【问题讨论】:
【参考方案1】:我太傻了!我忘记将新列添加到 models/user.js
models/user.js:
'use strict';
module.exports = (sequelize, DataTypes) =>
const User = sequelize.define('User',
username: DataTypes.TEXT,
password: DataTypes.TEXT,
token: DataTypes.TEXT,
abbr: DataTypes.TEXT,
deleted: DataTypes.BOOLEAN,
email: DataTypes.TEXT,
firstName: DataTypes.TEXT
, );
User.associate = function(models)
;
return User;
;
【讨论】:
以上是关于Sequelize 不会将值插入到新添加的列中的主要内容,如果未能解决你的问题,请参考以下文章
尝试通过部署后脚本添加列(更改表)并尝试将数据添加到新创建的列中抛出错误