node.js - 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'”
我怎样才能让它如此续集发回一个对象?
解决方案
您刚刚获得了一个带有自己的附加道具和方法的 sequelize 模型对象实例。要获得普通对象,请执行以下操作:
const plainUser = user.get({ plain: true })
console.log(plainUser)
推荐阅读
- javascript - 创建登录时,到达一个空对象
- ios - SCNNode 在锚坐标系内旋转
- karate - 将响应中的值与数据库中的值匹配
- ios - iOS:使用 URLSessionDownloadDelegate 下载大视频时出现问题。当大小超过 40mb 时停止
- database - 时间序列数据存储:RDBMS 与 NoSQL
- node.js - Node / Express / EJS:如何从 index.ejs 获取价值并将其传递给 server.js
- node.js - Dialogflow,nodejs:文件系统模块 - 错误:EROFS:只读文件系统,在错误时打开“filename.pdf”(本机)
- bash - 内联 unix 命令作为文件名
- module - 内部表示未隐藏在 f# 模块中
- security - 如何在 scapy 的 tls 中发送原始数据?