关联使用了错误的列

2024-01-04

我正在使用现有的数据库,该数据库没有创建外键,但我可以使用 sql 查询连接两个表,但无法在后续中连接它们。

有两种型号: - 用户:

module.exports = (sequelize, DataTypes) => {
  var User = sequelize.define('User', {
    steamid: DataTypes.STRING,
    name: DataTypes.STRING,
    img: DataTypes.STRING,
    tradelink: DataTypes.STRING,
    ban_chat: DataTypes.INTEGER,
    block_sms: DataTypes.INTEGER,
    balance: DataTypes.INTEGER,
    ref: DataTypes.STRING,
    refcode: DataTypes.STRING,
    ip_address: DataTypes.STRING
  }, {
    timestamps: false
  });
  User.associate = function(models) {
    // associations can be defined here
    User.hasMany(models.Order,{
      foreignKey: 'steamid',
      as: 'orders'
    });

  };
  return User;
};
  • Order:
const customDataTypes = require('../../core').SequelizeTimestamp;

module.exports = (sequelize, DataTypes) => {
  var Order = sequelize.define('Order', {
    steamid: DataTypes.STRING,
    item_name: DataTypes.STRING,
    price: DataTypes.FLOAT,
    type: DataTypes.STRING,
    website: DataTypes.STRING,
    amount: DataTypes.INTEGER,
    status: DataTypes.INTEGER,
    img: DataTypes.STRING,
    send_attempts: DataTypes.INTEGER,
    message: DataTypes.STRING,
    date: customDataTypes.TIMESTAMP,
  }, {
    timestamps: false
  });
  Order.associate = function(models) {
    // associations can be defined here
    Order.belongsTo(models.User, {
      foreignKey: 'steamid',
      as: 'user'
    })
  };
  return Order;
};

在我的 API 中,我想获取用户和他的订单。 所以在控制器中我正在做:

user.findOne({
      where: { steamid: req.params.steamId },
      include: [{
        model: order,
        as: 'orders',
        limit: 50
      }],
    })

所以我希望在响应中包含用户订单数组,但由于某种原因我得到空订单数组。

Sequelize 正在执行这两个查询:

SELECT `User`.`id`, `User`.`steamid`, `User`.`name`, `User`.`img`, `User`.`tradelink`, `User`.`ban_chat`, `User`.`block_sms`, `User`.`balance`, `User`.`ref`, `User`.`refcode`, `User`.`ip_address` FROM `Users` AS `User` WHERE `User`.`steamid` = '1234' LIMIT 1;

这是成功找到用户,但第二个查询不正确:

SELECT `id`, `steamid`, `item_name`, `price`, `type`, `website`, `amount`, `status`, `img`, `send_attempts`, `message`, `date` FROM `Orders` AS `Order` WHERE `Order`.`steamid` IN (1) LIMIT 50;

这部分不正确“WHEREOrder.steamid在(1)" 它正在寻找 steamid = 1 的订单,即用户 ID(主键),但它应该是用户 steamid,即“1234”

我的联想出了什么问题?


如果 steamid 不是主要的,您不应该使用“targetKey”和“sourceKey”?

https://sequelize.org/master/manual/associations.html https://sequelize.org/master/manual/associations.html

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

关联使用了错误的列 的相关文章

随机推荐

  • ruby 中的块作用域

    我的理解是 ruby 块具有块作用域 并且在块内创建的所有变量将仅存在于该块内 案例示例 food toast cheese wine food each food puts food capitalize puts food Output
  • Woocommerce 按属性搜索

    我在默认的 woocommerce 搜索系统中遇到了一个小问题 我需要开设一家基于 WooCommerce 的书店 所有这些书籍都包含独特的属性 例如标识号和 ODN 或 IBN 现在我需要一个搜索栏 如果我在搜索栏中输入任何独特的属性 例
  • 什么控制 git checkout 反馈?

    有时一个git checkout命令给出进度反馈 git checkout develop Checking out files 100 10779 10779 done Switched to branch develop 有时它不会 下
  • Python中获取总物理内存

    如何以与分布无关的方式获取 Python 中的总物理内存 我不需要已用内存 只需要总物理内存 跨平台解决方案的最佳选择是使用psutil https github com giampaolo psutil包 可在PyPI https pyp
  • Helvetica 在 Windows 操作系统上呈现为 Arial

    在我的网站上 http helvetitee com http helvetitee com 我有以下字体堆栈 font family helvetica neue helvetica nimbus sans Nimbus Sans 一种网
  • 用 Coq 重写假设,保留蕴涵

    我正在做 Coq 证明 我有P gt Q作为假设 并且 P gt Q gt Q gt P 作为引理 如何将假设转化为 Q gt P 当我尝试apply它 我只是产生新的子目标 这没有帮助 换句话说 我想从以下开始 P Prop Q Prop
  • 清除 woocommerce 中的结账字段

    我正在尝试删除各个结账字段中自动加载的用户信息 但似乎找不到任何方法来访问字段值 我已经尝试了以下清除格式 删除 字段等的操作 但我找不到任何内容显示如何仅删除该值 有谁知道如何访问这个 add filter woocommerce che
  • 如何使用 ADB 生成 Android 中的捏合等多点触控事件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想通过 ADB 命令行在 Android 中生成多点触控 捏合 的输入事件 现在我可以使用以下命令生成触摸屏滑动事件 input t
  • 每个项目类型都有单独的资源字典

    我已经在我的共享项目中创建了一个 ResourceDictionary 没有任何问题 然而 我的一些样式对于 Windows Phone 8 1 来说非常特殊 并且不会在 Windows 8 1 中使用 由于Windows Phone项目中
  • OwinContext.Request.Path 和 PathBase 是如何填充的?

    我正在根据 Katana 项目中的其他示例为 OpenID Connect 授权代码流程编写自己的 OWIN 中间件 作为此过程的一部分 我必须构造几个 URI 例如重定向 URI 和返回 URL Katana 中的其他示例通过连接当前请求
  • 通过适应度函数从群体中选择个体

    我一直在研究一种算法 我需要从大小为 k 的群体中选择 n 个个体 其中 k 比 n 大得多 所有个体都有适应度值 因此选择时应优先考虑较高的适应度值 然而 我不想简单地选择最好的n个人 最差的人也应该有机会 自然选择 因此 我决定找到人群
  • 如何在 Ninject 中使用 Provider

    我有以下代码 public class Something Inject public Configuration config get set singleton Inject public Provider
  • 按分隔符分割字符串

    我实在找不到这个答案 我在 XCode 中有一个名为 myString 的多行 NSString 它是一个 HTML 代码 我需要按行导航字符串 例如 myString 如何逐行访问 喜欢 LineOne myString Lines 0
  • 未绑定断点?

    在构建并运行代码后 我在运行一些断点时遇到了问题 我的项目是在 ASP NET 上的 我正在使用 VS 2022 到目前为止我已经尝试过以下操作 重启VS并删除我所有的断点 清理我的解决方案 构建 gt 清理解决方案 Delete vs f
  • 向上滚动不适用于 Listview 中的 SwipeRefreshLayout

    我想用 listView 实现滚动刷新功能 此外 同一布局文件中还有其他视图元素 如果列表为空 则会显示这些元素 这是我的布局文件 问题是 当我向下滚动然后尝试向上滚动时 而不是一直滚动到顶部然后刷新它只是在那里刷新并且向上滚动不起作用
  • 合并 IdentityDbContext 和 DbContext ASP.NET MVC

    我希望我的 ASP NET MVC 项目中只有一个 DbContext 我应该如何将默认的 IdentityDbContext 与我自己的代码首先 DbContext 合并 他们使用相同的数据库 public class Applicati
  • 套接字在 Python 中不工作

    我一直在尝试 Python 中的 socket 模块 但每当我尝试运行此代码时 import socket import sys host 192 168 1 1 port 23 try s socket socket socket AF
  • notepad++ 反向正则表达式替换(除字符串之外的所有内容)

    我本质上希望匹配每一行DOES NOT包含这个字符串 Hello Example sdfsdoifdoskf fdgokfdghodfkg hello fdojgohdfgjkdfg gfobjobhkdfokgdfg dofjkdsf h
  • 将函数置于后台

    我有以下功能 def update contacts data Update a user s contacts from Google to be run as a background task from users google oa
  • 关联使用了错误的列

    我正在使用现有的数据库 该数据库没有创建外键 但我可以使用 sql 查询连接两个表 但无法在后续中连接它们 有两种型号 用户 module exports sequelize DataTypes gt var User sequelize