Sequelize 不会将值插入到新添加的列中

Posted

技术标签:

【中文标题】Sequelize 不会将值插入到新添加的列中【英文标题】:Sequelize doesn't insert values into newly added columns 【发布时间】:2019-05-05 16:49:24 【问题描述】:

我有Users 表,我通过新的迁移文件向表中添加了两个新列emailfirstName

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

在我的日志中,我看到值没有被插入到新列 emailfirstName 中,而对于像“用户名”等旧列没有问题。

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 不会将值插入到新添加的列中的主要内容,如果未能解决你的问题,请参考以下文章

尝试通过部署后脚本添加列(更改表)并尝试将数据添加到新创建的列中抛出错误

Flyway 不会将值插入数据库

如何通过 switch compact 将值 1 插入 sq-lite 中的列

MySQL:将值检索到不同的列中

需要将值添加到现有的行和列中

单击按钮后将值添加到不同的列