gpt4 book ai didi

node.js - 如何从 Sequelize 的输出中删除关联?

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:13 25 4
gpt4 key购买 nike

我为模型用户定义了一个 classMethod

// model user.js
classMethods: {
associate: function(models) {
User.belongsToMany(models.project, {through: 'user_project', foreignKey: 'user_id', otherKey: 'project_id'})
}
}

从 Express 中的路由中查询该用户的项目并将其输出为 JSON

user.getProjects({
attributes: ['id', 'title'],
})
.then(function(projects) {
res.json(projects)
})

这工作正常,除了输出还包含我想隐藏/省略/删除的 user_project 属性

[
{
"id": 8,
"title": "Some project",
"user_project": {
"created_at": "2017-02-16T22:52:48.000Z",
"updated_at": "2017-02-16T22:52:48.000Z",
"project_id": 8,
"user_id": 5
}
},
//etc.

我尝试了各种排除和包含语句,但输出始终包含它。

有没有办法不让它出现在输出中?

最佳答案

我偶然发现了解决方案。

要从连接表中删除属性,您可以使用joinTableAttributes,如下所示:

user.getProjects({
attributes: ['id', 'title'],
joinTableAttributes: []
})
.then(function(projects) {
res.json(projects)
})

通过这样做,它将删除 user_project 表的(参见OP)输出,结果是:

[
{
"id": 8,
"title": "Test Project",
},
{
"id": 4,
"title": "Another one",
}
]

关于node.js - 如何从 Sequelize 的输出中删除关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com