Sequelize 模型与模型不关联

2024-03-03

我花了几个小时却毫无结果。我有很多资源,它们都有点相同,但我就是无法让我的项目发挥作用。

这个问题Sequelize.js - “不关联到” https://stackoverflow.com/questions/50841912/sequelize-js-is-not-associated-to与我的非常相似,但是,我的这个问题不应该重复。因为它肯定有新问题!

列出我的资料来源,我已经仔细阅读并尝试过的资料来源:

  1. Sequelize.js - “不关联到” https://stackoverflow.com/questions/50841912/sequelize-js-is-not-associated-to
  2. Sequelize 4.3.2 n:m(多对多)关联:未处理的拒绝 SequelizeEagerLoadingError https://stackoverflow.com/questions/45151194/sequelize-4-3-2-nm-many-to-many-association-unhandled-rejection-sequelizeeag
  3. https://medium.com/@eth3rnit3/sequelize-relationships-ultimate-guide-f26801a75554 https://medium.com/@eth3rnit3/sequelize-relationships-ultimate-guide-f26801a75554

为了添加上下文,我试图提供一条路线,让用户获取他们的个人资料。每个用户只有一个角色。

Like so:

{
  id: 4,
  email: 'a[email protected] /cdn-cgi/l/email-protection',
  role: {
     id: 2,
     name: 'admin'
  }
}

将 findOne 与 WHERE 和 INCLUDE 结合使用

exports.getme = (req, res) => {
  db.users.findOne({
    where: { id: req.user.id },
    include: [{
      model: db.roles,
    }]
  })  
  .then(data => {
    res.send(data)
  })
  .catch(err => {
    console.log(err)
    res.status(500).send({
      message: "An error has occured while retrieving data."
    })
  })
}

我得到的错误是:

角色未与用户关联!


以下是模型,以及我如何表达它们各自的关联:

Role.js

'use strict';
module.exports = (sequelize, DataTypes) => {
  const Role = sequelize.define('Role', {
    id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      autoIncrement: true,
      field: "id"
    },
    role: DataTypes.STRING
  }, {
    timestamps: false
  });
  Role.associate = function (models) {
    Role.hasMany(models.User, {
      foreignKey: "roleId",
      sourceKey: "id"
    })
  }
  return Role;
};

User.js

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

另外,当我检查关系我的表格中,我只能看到我的详细信息USER表,但我的中没有ROLES table.


编辑:评论部分的阿纳托利指出,似乎db.users没有关联时findOne火了。这是我在我的模型中设置模型的方法server.js:

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

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

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

  const db = require("./app/models")
  // Custom.
  db.op = db.Sequelize.Op
  // Models
  db.appsettings = require("./app/models/appsettings/appsettings.model")(db.sequelize, db.Sequelize)
  db.countries = require("./app/models/appsettings/country.model")(db.sequelize, db.Sequelize)

  db.users = require("./app/models/user/user.model")(db.sequelize, db.Sequelize)
  db.roles = require("./app/models/user/role.model")(db.sequelize, db.Sequelize)
  db.userscores = require("./app/models/user/userscore.model")(db.sequelize, db.Sequelize)

  db.answers = require("./app/models/game/answer.model")(db.sequelize, db.Sequelize)
  db.categories = require("./app/models/game/category.model")(db.sequelize, db.Sequelize)
  db.questions = require("./app/models/game/question.model")(db.sequelize, db.Sequelize)
  db.useracoomplishedquestions = require("./app/models/game/useracoomplishedquestion.model")(db.sequelize, db.Sequelize)
}

模型/index.js(由 Sequelize 生成,我对其进行了一些修改并使用glob轻松扫描子文件夹)

'use strict';

const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config')[env];
const db = {};
const glob = require("glob")

let sequelize;
if (config.use_env_variable) {
  sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
  sequelize = new Sequelize(config.database, config.username, config.password, config);
}

// Use glob to access model files inside subfolders.
const files = glob.sync(__dirname + "/*/*.js")

files.forEach(file => {
  const model = sequelize['import'](file);
  db[model.name] = model;
})

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

通过这段代码

// Models
  db.appsettings = require("./app/models/appsettings/appsettings.model")(db.sequelize, db.Sequelize)
  db.countries = require("./app/models/appsettings/country.model")(db.sequelize, db.Sequelize)

  db.users = require("./app/models/user/user.model")(db.sequelize, db.Sequelize)
  db.roles = require("./app/models/user/role.model")(db.sequelize, db.Sequelize)
  db.userscores = require("./app/models/user/userscore.model")(db.sequelize, db.Sequelize)

  db.answers = require("./app/models/game/answer.model")(db.sequelize, db.Sequelize)
  db.categories = require("./app/models/game/category.model")(db.sequelize, db.Sequelize)
  db.questions = require("./app/models/game/question.model")(db.sequelize, db.Sequelize)
  db.useracoomplishedquestions = require("./app/models/game/useracoomplishedquestion.model")(db.sequelize, db.Sequelize)

您覆盖了 models/index.js 中注册的模型定义,这就是这些模型没有关联的原因。只需删除这些行即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sequelize 模型与模型不关联 的相关文章

  • 限制可选 DOM 复选框

    我试图限制用户可以选择的复选框数量 这些复选框是为数组中的每个项目生成的 DOM 输入对象 我目前对此没有运气 因此非常感谢任何帮助 谢谢 在这里小提琴 http jsfiddle net vVxM2 222 http jsfiddle n
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不
  • 为什么 length 是 `Array` 的属性而不是 `Array.prototype` 链

    所以我在 V8 控制台上玩了很多 我做到了 Object getOwnPropertyNames 我期望得到 结果 然而 length 所以这意味着不是成为原型链的一部分 length是所有人的成员财产Array对象 这是一个错误 还是有任
  • 搜索深度嵌套数组以更新对象

    我有一个深层嵌套的数据结构 我有兴趣匹配数组 和数组数组 中的某个值 然后将一些数据推送到随附的数组中 例如以下是我的数组colors并伴随着的是更多颜色数组可能存在也可能不存在 var myData color green moreCol
  • 确定元素是在页面折叠上方还是下方

    我有一些页面有多个输入框 用户可以在其中输入文本 在单击 下一步 按钮之前 需要填写其中一些内容 我弹出验证错误供用户查看 但是如果问题不在页面上 我希望页面滚动到它 而不是他们必须搜索丢失 错误的字段 我有一个滚动到位 但我无法确定要滚动
  • 嵌套异步/等待 Nodejs

    似乎无法弄清楚为什么这对我不起作用 我有一个父函数 它对子加载进程执行 AWAIT LOAD 进程又调用另一个名为 LOADDATA 的 AWAIT 所以基本上是这样的 module exports async function try a
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • Nodejs - 检查隐藏文件

    我正在迭代文件目录 想知道是否可以测试文件是否隐藏 目前 我只是检查文件是否以 开头或不 这适用于 Mac 也许还有 Linux 但是 我想知道如何在 Windows 上做到这一点 另外 句点会在所有版本的 Linux 中隐藏该文件吗 Th
  • 有没有办法将变量从 javascript 导入到 sass 或反之亦然?

    我正在制作一个依赖于块概念的 CSS 网格系统 所以我有一个基本文件 例如 max columns 4 block width 220px block height 150px block margin 10px 它被 mixin 使用 m
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • 在 React Navigation 中将 props 传递给自定义抽屉导航器

    在反应导航抽屉菜单中 我想显示用户名 John Doe 它处于我的主要组件的状态 Router 我怎样才能将自定义抽屉内容组件传递给它 额外信息 我从 AsyncStorage 中获取此名称 组件已挂载 这是我的代码 export defa
  • 获取点击的的DOM路径

    HTML div class lol a class rightArrow href a div 伪代码 rightArrow click function rightArrowParents this dom dom is the pse
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • 如何在 ASP.NET MVC 3 的 Razor 视图中编码嵌入的 javascript?

    如何在以下上下文中正确编码 JavaScript 我的 JSON 对象中的值是由应用程序管理员设置的 因此我假设它们需要正确编码 对于 HTML 和 JavaScript 都是如此 我在用着System Web Script Seriali
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • 从节点服务器访问 Google Calendar API

    由于某种原因 我很难访问 Google 日历 我希望能够在 Node js 服务器的日历中添加和删除事件 我从文件中发现了非常矛盾的信息 我跟着 https developers google com identity protocols
  • 强制输入数字小数位

    我想强制
  • 使用 JQuery 根据下拉列表选择的值显示/隐藏控件

    我正在尝试使用 JQuery 根据下拉菜单的选定索引显示 隐藏 div 标签 但它不起作用 任何帮助将不胜感激 Thanks
  • Internet Explorer 9 是否会因数组和对象文字末尾的额外逗号而卡住?

    现代浏览器和 Node js 等环境允许您说 a 1 b 2 或 1 2 3 这在历史上一直是 Internet Explorer 的问题 Internet Explorer 9 中修复了此问题吗 对此有两种不同的答案 一种是对象初始值设定

随机推荐

  • “启用”类比较[重复]

    这个问题在这里已经有答案了 我需要有关我的 CSC 硬件的帮助 它位于类 对象上 是一个定义圆的简单类 名称为 class Circle object 硬件的确切文本 我完成了该硬件的前两部分 因此第三部分是对初始问题的扩展 通过使用 gt
  • 使结构比赋予该结构的方法的参数更长寿

    我正在寻找一种方法来确保结构的寿命比赋予该结构的方法的参数的寿命长 即使结构在离开方法后不保存对该数据的引用 这是用于馈送到 FFI 的包装原始指针 我想保证实现 FFI 的结构比Option lt a Any gt 我用来将 Rust 对
  • 使用 Core Graphics 制作饼图

    到目前为止 我已经画好了一个圆圈 仅此而已 我正在尝试制作一个饼图来表示满意和不满意的客户数量并展示它 我对 CG 非常陌生 想知道有人可以编写足够的代码来给我一个想法或指导我 我是否应该让底部的圆圈代表满意的客户数量 然后在其顶部添加另一
  • 如何使用 Android SDK 在 Facebook 墙上简单地分享内容?

    我找不到很多 FB Android SDK 的示例 并且示例不够简单 其中一些已弃用 我的简单目标是使用我的 Android 应用程序在 FB 上分享一些内容 当我开发 iOS 应用程序时 它很简单 AppDelegate appDeleg
  • 在 Windows 上使用 shp2pgsql.exe 将 shapefile 提取到 PostgreSQL/PostGIS 数据库的 Python 脚本

    我有一个托管在 Windows 2008 Server RT 虚拟机上的 PostgreSQL 数据库 是的 我知道它应该托管在 Linux 虚拟机上 但这是我的组织规定的 唉 我们的 GIS 人员将大量 shapefile 转储到存储库中
  • nvcc、gcc、clang 和 msvc 是否“尊重”结构中的 __restrict__ 关键字?

    假设我有 struct s int restrict p1 double v void foo int restrict p2 struct s my s 下面列出的 C 编译器是否遵循 restrict 在这种情况下关键字 并假设内存访问
  • 将 DataGridCell ToolTip 属性绑定到 DataGridCell 的值

    I have DataGrid和其中之一DataGrid列看起来像这样
  • 如何在 Chartjs 中添加图像作为背景?

    我在可编程设备上使用 Chart js lib 我需要添加图像作为图表的背景 如果不可能 我如何将背景颜色更改为黑色 我无法使用 Jquery 因为平台不支持它 谢谢 谢谢你 我没想到CSS 我也以类似的方式添加了图像 canvas bac
  • 如何在执行之前获取processbuilder命令

    我想知道在它发生之前将执行的命令 String cmd curl X POST https api renam cl medicion insert access token Yoq3UGQqDKP4D1L3Y6xIYp Lb6fyvavp
  • 在使用 Javascript 上传之前检查图像的宽度和高度

    我有一个 JPS 其表单中用户可以放置图像 div class photo div Photo max 240x240 and 100 kb div div
  • 在 PHP 中保护登录 cookie 数据的最佳方法是什么?

    我正在用 PHP 创建一个登录系统 我想知道如何最好地保护 cookie 中的用户信息字符串 我正在考虑用密钥以某种方式加密字符串 这是最好的方法吗 我对此有点陌生 提前致谢 不要在 cookie 中存储敏感信息 存储会话 ID 哈希以将登
  • firebase.intializeApp 不是一个函数

    所以我陷入了这个错误 我使用 telegram bot api 制作了一个 telegram 机器人 现在尝试设置一个 firebae DB 来保存组成员的分数 因此重新启动机器人后分数不会重置 有人可以告诉我问题是什么吗 我在这里读到了很
  • 如何在 Sublime Text 2 编辑器中将一行传递到控制台

    我使用 RStudio 来处理 R 编程语言并找到ctrl enter将一行发送到控制台的快捷方式对于解决我的工作问题非常有用 现在我正在使用 sublimetext2 我想在 RStudio 中做同样的事情 向控制台发送一行 有没有办法将
  • 定位偏移 div / 图像

    我想达到这个结果 参见此示例图片 首先 我尝试使用 CSS 创建部分边框 使用div after 问题 我有几个不同格式的图像 但它无法正常工作 所以 我尝试过使用背景 divposition relative和一个图像position a
  • docker-compose 不使用 Flask 设置环境变量

    运行 Flask 容器 当我尝试读取环境变量时 它们不是由 docker compose 设置的 我正在使用 docker compose 文件版本 2 compose file services test build test image
  • 像表格一样显示 DL [重复]

    这个问题在这里已经有答案了 如何设置定义列表项的样式以使每个定义都在一行中 HTML dl dt word dt dd meaning dd dt word dt dd meaning dd dt word dt dd meaning dd
  • Jupyter Lab未使用虚拟环境

    我创建了一个虚拟环境并安装了ipython all and jupyter与点 当我跑步时jupyter lab 打开笔记本 并尝试导入我在虚拟环境中安装的包 我收到 ModuleNotFoundError Running ipython在
  • 如何在 jquery 中切换 attr()

    我有一个简单的添加属性函数 list toggle click function list sort attr colspan 6 我的问题是 我怎样才能把它变成一个切换 所以colspan 6 下次单击时从元素中删除吗 如果你感觉很奇特
  • RenderTargetBitmap 渲染尺寸错误的图像

    我的任务是向用户显示 XPS 文档每一页的缩略图 我需要所有图像都很小 所以我用dpi设置为 72 0 我在 google 上搜索到 dpi 72 0 的 A4 纸的尺寸为 635x896 基本上 我执行以下操作 List
  • Sequelize 模型与模型不关联

    我花了几个小时却毫无结果 我有很多资源 它们都有点相同 但我就是无法让我的项目发挥作用 这个问题Sequelize js 不关联到 https stackoverflow com questions 50841912 sequelize j