当前位置: 首页 > 面试题库 >

Sequelize模型关联不会创建新列

董子航
2023-03-14
问题内容

为什么在我的某些模型中序列化不会为 Foreignkey 创建新列?但是它确实为其他模型创建了???
令人沮丧和奇怪。例如,在此用户模型中,不会创建sequelize role_id

'use strict';
module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define('User', {
    id: { type: DataTypes.BIGINT, allowNull: false, autoIncrement: true, unique: true, primaryKey: true },
    first_name: DataTypes.STRING,
    last_name: DataTypes.STRING
  }, {});
  User.associate = function(models) {
    User.belongsTo(models.Role, { foreignKey: 'role_id' });
  };
  return User;
};

这是一个类似的问题:不会创建模型关联列但不能创建!没有回答。

我已经花了几个小时,我做了所有类似的事情:

  1. 仔细阅读以下内容:https : //sequelize.org/master/manual/assocs.html
  2. 做实验,例如使用name创建一个新的虚拟模型NewUser。有用!但同样没有User名字。
  3. 发表在Sequelize的Slack频道上。

在提出Stackoverflow问题之后,我将在其Github的问题页面上寻求帮助。

我在想我可以只定义列role_id而不是通过associate函数添加它。


问题答案:

感谢Anatoly这样处理有关Sequelize的问题。

经过如此多的尝试和错误,我发现问题是由我的路线注册引起的,例如:

require("./app/routes/user/user.routes")(app)

在我的 app.jsserver.js中 。这些路由注册是在 db.sync !之前添加的。

所以我所做的是,在那之后我将这些路由称为 db.sync ,就像这样:

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

if (process.env.NODE_ENV === "production") {
  db.sequelize.sync().then(() => {
    useRoutes()
  })
} else {
  db.sequelize.sync({ force: true }).then(() => {
    console.log("Drop and re-sync db.")
    useRoutes()
  })
}

function useRoutes() {
  console.log("Use routes...")
  require("./app/routes/user/user.routes")(app)
  require("./app/routes/auth/auth.routes")(app)
}

瞧,固定!



 类似资料:
  • 问题内容: 是否可以一次更新父模型和关联模型的属性?我无法使其正常工作,并且无法找到任何完整的示例。我不确定我的代码是否有问题或是否没有按照我期望的方式工作。我尝试将onUpdate:’cascade’添加到我的hasMany定义中,但这似乎无济于事。 楷模: 检索过滤器并尝试更新关联的FilteredContent对象上的属性: 这导致仅Filter对象中的属性被更新。如何获取它还更新Filte

  • 问题内容: 使用内联formset docs中的示例,我能够(使用modelforms)编辑属于特定模型的对象。我一直在尝试使用相同的模式来 使用内联表单集创建新对象,但是一直无法清除我的头来为此目的提供工作视图。 使用与上述链接相同的示例,我将如何创建“作者”模型的新实例及其相关的“书”对象? 问题答案: 首先,创建一个Author模型表单。 然后创建一个虚拟作者对象: 然后使用伪作者创建内联表

  • 我希望hibernate创建三个表,但在我的情况下,只创建了一个表角色,我得到了如下错误 原因:org.hibernate.tool.schema.spi.schemaManagementException:无法对JDBC目标执行模式管理[创建表user_role(user_role_id numeric(19,0)标识not null,role_id numeric(19,0),user_id

  • 我有一个电影模特,有以下联想(属于电影类型): 演员 国家 类型。。。 当一个表单被张贴时,我有这个数据(这里跳过了很多细节): '演员'= 我希望我的update()/store()控制器函数能够轻松关联这些模型。 名为“卡里·格兰特”的演员可能存在,也可能不存在,也可能与我正在编辑的电影有关联。我还可以把他从这部电影中删除,所以我需要删除关联。体裁和其他一切都一样。 所以我想我应该做一个基本模

  • 通过预先确定好模型之间的关系,在业务开发中,使用非常简便的写法,就可以实现复杂的涉及多表数据增删改查。 这一切都是模型底层实现帮你在处理,在 imi 中,模型的关联关系都使用注解来定义。 注解 这里列出定义模型关联关系所需的注解,所有关联模型的注解,命名空间为Imi\Model\Annotation\Relation @OneToOne 一对一关系声明 用法: @OneToOne("模型类名")

  • 如果我只传递一个字符串,而不是的列表: 我得到的是: