mysql - 关于 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获取所有的订单信息。我正在逐步检查使用“包含”选项时发生的情况。但我收到了我无法理解的消息......我该如何解决这个问题?
解决方案
推荐阅读
- r - R 3.5 中的 state.center 包
- typescript - tsconfig 参考似乎不适用于 VS2017 15.7.1 中的多个项目
- xamarin - 将 Android MainActivity.cs 中的短文本数据绑定/设置到共享的 Xamarin 表单标签?
- subquery - 子查询中的左连接
- xml - 删除 XSLT 中的双引号和斜杠
- java - 计算整数位数
- r - R 变异列代表许多其他列的平均值
- java - 如何从图的广度优先搜索中获取路径中的所有节点
- java - 从 InputStream 读取 NullPointerException
- android - SimpleDateFormat 解析日期正确模式