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

标签 node.js express sequelize.js

我为模型用户定义了一个 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/

相关文章:

javascript - TypeError : $ . 查找不是函数

node.js - 每次插入后继续提交

mysql - 在应用程序启动时在 Nodejs 中创建重复表的 Sequelize

javascript - NodeJS 中的递归异步循环

node.js - Express 4 — 如何解析签名cookie?

javascript - 我如何保持父表可用

node.js - 如何修复 nodejs 上的这个快速和文件系统错误?

javascript - Node.js、Express、EJS - 导航中当前页面上的事件类

javascript - 多个虚拟主机可在 Chrome 上运行,但不能在 Firefox 或 Safari 上运行

graphql - 无法将自定义结果从解析器传递给 Graphql