首页 > 解决方案 > Sequelize 不返回对象,而是返回额外数据

问题描述

当我使用 sequelize 运行任何 find 函数时,我希望得到我想要获取的数据的一个对象,相反,我会得到一堆额外的数据。这就是我打印 sequelize 给我的结果时得到的结果

这是我运行的代码:

getAllHubsByUser: function(userId, callback){
        db.User.findByPk(userId)
            .then(function(user) {
                user.getSubscriptions()
                    .then(function(hubs){
                        dataValuesHubs = []
                        for (hub in hubs) {
                            dataValuesMembers.push(hub.dataValues)
                        }
                        callback(dataValuesHubs, null)
                    })
                    .catch(function(error){
                        callback(null, error)
                    })
            })
            .catch(function(error) {
                callback(null, error)
            })
    },

我在名为 Hubs 和 Users 的表之间存在多对多关系,许多用户可以订阅许多集线器。关系如下所示:

User.belongsToMany(Hub, {as: "Subscriptions", through: 'hubSubscriptions', foreignKey: 'userId'})
Hub.belongsToMany(User, {as: "Subscribers", through: 'hubSubscriptions', foreignKey: 'hubId'})

由于 sequelize 不返回对象,因此当您运行 user.getSubscriptions() 时出现错误:“未处理的拒绝类型错误:无法读取未定义的属性 'findAll'”

我怎样才能让它如此续集发回一个对象?

标签: node.jsormsequelize.js

解决方案


您刚刚获得了一个带有自己的附加道具和方法的 sequelize 模型对象实例。要获得普通对象,请执行以下操作:

const plainUser = user.get({ plain: true })
console.log(plainUser)

推荐阅读