首页 > 解决方案 > 关于 Sequelize M:N 查询与belongToMany 但我得到未知列错误

问题描述

我正在做一个学习的小项目。首先,这是主要的错误信息。

Executing (default): 
SELECT `order`.`id`, `order`.`order_context`, `order`.`price`, `order`.`createdAt`, `order`.`updatedAt`, `order`.`userid`, `posts`.`id` 
AS `posts.id`, `posts`.`title` 
AS `posts.title`, `posts`.`context` 
AS `posts.context`, `posts`.`price` 
AS `posts.price`, `posts`.`createdAt` 
AS `posts.createdAt`, `posts`.`updatedAt` 
AS `posts.updatedAt`, `posts`.`userid` 
AS `posts.userid`, `posts`.`username` 
AS `posts.username`, `posts`.`imageId` 
AS `posts.imageId`, `posts->order_post`.`createdAt` 
AS `posts.order_post.createdAt`, `posts->order_post`.`updatedAt` 
AS `posts.order_post.updatedAt`, `posts->order_post`.`orderId` 
AS `posts.order_post.orderId`, `posts->order_post`.`postId` 
AS `posts.order_post.postId` 
FROM `orders` 
AS `order` 
LEFT OUTER JOIN 
( `order_post` 
AS `posts->order_post` 
INNER JOIN `posts` 
AS `posts` 
ON `posts`.`id` = `posts->order_post`.`postId`)
 
ON `order`.`id` = `posts->order_post`.`orderId`;


(node:72358) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Unknown column 'posts.imageId' in 'field list'
    at Query.formatError (/home/kyu/projects/Giftletters/server/node_modules/sequelize/lib/dialects/mysql/query.js:265:16)
    at Query.run (/home/kyu/projects/Giftletters/server/node_modules/sequelize/lib/dialects/mysql/query.js:77:18)
    at process._tickCallback (internal/process/next_tick.js:68:7)

mysql> desc posts;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int          | NO   | PRI | NULL    | auto_increment |
| title     | varchar(255) | YES  |     | NULL    |                |
| context   | varchar(255) | YES  |     | NULL    |                |
| price     | int          | YES  |     | NULL    |                |
| createdAt | datetime     | NO   |     | NULL    |                |
| updatedAt | datetime     | NO   |     | NULL    |                |
| userid    | int          | YES  | MUL | NULL    |                |
| username  | varchar(255) | YES  | MUL | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

mysql> desc orders;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int          | NO   | PRI | NULL    | auto_increment |
| order_context | varchar(255) | YES  |     | NULL    |                |
| price         | int          | YES  |     | NULL    |                |
| createdAt     | datetime     | NO   |     | NULL    |                |
| updatedAt     | datetime     | NO   |     | NULL    |                |
| userid        | int          | YES  | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
mysql> desc images;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int          | NO   | PRI | NULL    | auto_increment |
| image     | varchar(255) | YES  |     | NULL    |                |
| createdAt | datetime     | NO   |     | NULL    |                |
| updatedAt | datetime     | NO   |     | NULL    |                |
| postid    | int          | YES  | MUL | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
mysql> desc order_post;
+---------+------+------+-----+---------+-------+
| Field   | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| orderid | int  | YES  | MUL | NULL    |       |
| postid  | int  | YES  | MUL | NULL    |       |
+---------+------+------+-----+---------+-------+
const { user, order, post, image } = sequelize.models;
order.hasOne(user);
user.hasMany(order , { foreignKey : "userid"});

post.hasOne(user);
user.hasMany(post, { foreignKey : "userid"});
user.hasMany(post, { foreignKey : "username"});


image.hasOne(post);
post.hasMany(image, { foreignKey : "postid"});

order.belongsToMany(post, {through : "order_post"});
post.belongsToMany(order, {through : "order_post"});

这是我正在尝试的代码。

  getuserinfo: (req, res) => {
    user.findAll({
      include : [{
        model : order
      }]
    }).then(response => console.log(response))

我想通过post的id获取所有的订单信息。我正在逐步检查使用“包含”选项时发生的情况。但我收到了我无法理解的消息......我该如何解决这个问题?

标签: mysqlsequelize.js

解决方案


推荐阅读