序列化别名

时间:2019-10-09 20:04:32

标签: node.js sequelize.js

我正在使用sequelize,并且我有一个带有两个外键的模型

app.schemas.messengers.belongsTo(app.schemas.users, {
    foreignKey: 'id_user_to',
    as: 'to'
});

app.schemas.messengers.belongsTo(app.schemas.users, {
    foreignKey: 'id_user_from',
    as: 'from'
});

,并且查询结果必须返回该特定用户的所有消息 这是查询的代码

 return Users.findAll({
     attributes: ['uuid', 'id', 'profile_pic', 'firstname', 'lastname', 'online'],
            where: whereUser,
            include: [{
                model: Messengers,
                as: 'from',
                // as: 'to',
                where: whereMessenger,
                $or: [{
                        id_user_to: user.id,
                    },
                    {
                        id_user_from: user.id

                    }
                ],
                order: [
                    ['createdAt', 'ASC'],
                ],
            }]
        })

但仅返回给我写信的用户的消息,而不是给我写信给用户的消息。 它有什么办法,所以我可以在sequelize的as属性上放置两个别名,或者还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

您必须输入两次,例如

   ...
   include: [
   {
      model: Messengers,
      as: 'from'                
      /* other stuff */
   },
   {
      model: Messengers,
      as: 'to'                
      /* other stuff */
   }
  ],
  ...

此外,别名“ to”和“ from”是保留字,您可能会遇到麻烦。我建议改用msgTo和msgFrom ...