序列化包含模型但没有表名

时间:2019-12-24 10:30:08

标签: javascript node.js express sequelize.js sequelize-cli

我是Sequelize的新手

我对“嵌套的渴望加载”有疑问

我有2个具有一对多关系的表

  1. 评论表

  2. 用户表

我将此代码用于查询

Comment.findAll({
   include: [User]
})

我知道了

{
    id: 1,
    comment: "test",
    user: {
       id: 3,
       name: "someone"
    }
}

但是我期望这样的结果

{
    id: 1,
    comment: "test",
    user_id: 3,
    user_name: "someone"
}

我阅读了几个有解决方案的stackoverflow帖子,但适用于版本3.3

Comment.findAll({
   attributes: ['id', 'name', ['user.id','user_id'], ['user.name','user_name']]
   include: [{ model: User, attributes:[], nested: false, required: true }]
})
Comment.findAll({
   attributes: ['id', 'name', [Sequelize.col('user.id'),'user_id'], [Sequelize.col('user.name'),'user_name']]
   include: [{ model: User, attributes:[], nested: false, required: true }]
})

但这对我不起作用。

现在我使用sequelize 5.5.1如何实现它。

有人可以帮助我吗?

我的女朋友伤了我的心。您是回答这个问题的唯一可以治愈我的心的人。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码获得所需的输出:

由于Sequelize是基于承诺的,因此建议使用then和catch。

Comment.findAll({
   include: [User]
}).then(result=>
{
  let obj=
{
    id: result.item,
    comment: result.comment,
    user_id: result.user.id,
    user_name: result.user.name
};
console.log(JSON.stringify(obj));

}).catch(err=>
{
console.log(err);
});