我很难弄清楚为什么我的include语句抛出这个错误
"name": "SequelizeEagerLoadingError"我的控制器函数看起来像这样
retrieve (req, res) {
return User
.findOne({
where: {
token_id: req.params.token_id
},
include: [{
model: subscribedcurrency,
as: 'subscribed currency'
}]
})
.then(user => {
if (!user) {
return res.status(404).send({
message: 'User Not Found'
})
}
return res.status(200).send(user)
})
.catch(error => res.status(400).send(error))
},subscribedcurrency的模型如下所示
module.exports = (sequelize, DataTypes) => {
var SubscribedCurrency = sequelize.define('SubscribedCurrency', {
symbol: {
type: DataTypes.STRING,
allowNull: false
},
name: {
type: DataTypes.STRING,
allowNull: false
},
priceAtSubscription: {
type: DataTypes.STRING,
allowNull: false
}
})
SubscribedCurrency.associate = (models) => {
SubscribedCurrency.hasMany(models.User, {
foreignKey: 'userId',
onDelete: 'CASCADE'
})
}
return SubscribedCurrency
}我试着改变它的查询方式,User的主键,几乎所有我能想到的东西。用户和subscribedCurrency之间是多对多的关系。
不需要include语句和findOne查询就可以完美地工作!
发布于 2018-04-30 18:26:07
我认为您所需要做的就是删除as: 'subscribed currency',因为您还没有定义与别名的关联。
因此,从这里可以看出:
include: [{
model: subscribedcurrency,
as: 'subscribed currency'
}]要这样做:
include: [{
model: subscribedcurrency,
}]https://stackoverflow.com/questions/50094831
复制相似问题