sequelize,mysql关联查询结果,如何排除不要的字段(中间产生字段)
问题描述
关联查询,如果排除不要的字段(产生的中间字段)
一个作者表,一个新闻表。
每条新闻,都包含一个作者
查询新闻列表时,需要关联查询出作者的名字,并返回前端
我想要只返回作者名字,而不是返回一个对象(里面包含名字)
我要如何排除这个对象字段呢,让其不返回
问题出现的环境背景及自己尝试过哪些方法
eggjs,各种尝试exclude,不起作用
相关代码
作者模型如下,id和lable
module.exports = (app) => {
const { STRING, INTEGER } = app.Sequelize;
const Author = app.model.define(
"Author",
{
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true
},
label: {
type: STRING,
unique: true,
allowNull: false
}
},
{
tableName: "sys_author"
}
);
return Author;
};
新闻模型如下,添加新闻时,需要选择一个作者
module.exports = (app) => {
const { STRING, INTEGER } = app.Sequelize;
const News = app.model.define(
"News",
{
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true
},
title: {
type: STRING,
allowNull: false
},
author: {
type: STRING,
allowNull: false
}
},
{
tableName: "sys_news"
}
);
News.associate = function () {
app.model.News.belongsTo(app.model.Author, { foreignKey: 'author', targetKey: 'id' })
}
return News;
}
查询新闻列表时,需要把作者名字查出来,如下
const { count, rows } = await this.ctx.model.News.findAndCountAll({
include: [
{ model: this.ctx.model.Author, attributes: ['label'] }
],
attributes: {
include: [
[Sequelize.col('Author.label'), 'authorLabel'],
],
exclude: ['Author'] // 不起作用
}
})
此时,返回的数据结构中包含Author和authorLabel
Author: {label: "牛银苗"},
authorLabel: "牛银苗"
你期待的结果是什么?实际看到的错误信息又是什么?
我不想要返回Author对象,上面代码中加的exclude: ['Author']不起作用
请问一下,我不要返回关联查询中产生的对象Author,只要authorLabel
如何做到呢,代码应该如何修改,请指点
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)