【发布时间】:2019-07-03 16:01:00
【问题描述】:
我有以下代码,但我遇到了问题。我正在尝试包含images 表...
order 和 images 之间已经存在关系,但我不知道为什么它会显示以下错误:
Unhandled rejection SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'images.imageable' in 'on clause'
代码下方:
models.Order.findOne({
where: {
id: req.params.orderId
},
attributes: ['id', 'comment', 'rating', 'orderDescription', 'userLat', 'userLng',
'orderStatus', 'providerId', 'isUsingBalance', 'userId', 'serviceId',
'createdAt', 'updatedAt', 'ticketNumber', 'orderScheduledDate', 'promoId', 'paymentMethodId',
[sequelize.Sequelize.fn('date_format', sequelize.Sequelize.col('orderScheduledDate'), '%Y-%m-%D %h:%i'), 'orderScheduledDateToEdit']
],
include: [{
model: models.Comment,
include: [{
model: models.User,
attributes: ['firstName', 'lastName', 'id']
}]
},
{
model: models.Provider,
attributes: ['id', 'userId'],
include: [{
model: models.User,
attributes: ['id', 'firstName', 'lastName', 'phoneNumber']
},
{
model: models.ProviderLocation,
attributes: ['lat', 'lng', 'providerId']
},
{
model: models.PaymentMethod,
through: {
where: {
status: "ACTIVE"
}
}
}
]
},
{
model: models.User,
attributes: ['id', 'firstName', 'lastName', 'phoneNumber', 'status'],
include: [{
model: models.Balance,
attributes: ['balance']
}]
},
{
model: models.notified_providers,
attributes: ['orderId', 'providerBroadcastedId', 'distance', 'duration', 'status', 'rank_score', 'rate_score', 'distance_score', 'nationality_score', 'total_score'],
include: [{
model: models.Provider,
attributes: ['id'],
include: [{
model: models.User,
attributes: ['id', 'firstName', 'lastName', 'phoneNumber', 'status', 'rate', 'rankId']
},
{
model: models.PaymentMethod,
through: {
where: {
status: "ACTIVE"
}
}
}
]
}]
},
{
model: models.rate,
attributes: ['rate']
},
{
model: models.Service,
attributes: ['serviceType']
},
{
model: models.Promotion,
attributes: ['code', 'conditions']
},
{
model: models.PaymentMethod,
attributes: ['name', 'image']
},
{
model: models.images,
attributes: ['imageble', 'image', 'imagebleId']
}
]
});
我检查了每个模型内部的关系,很好,没有问题。
这是Order 型号:
Order.hasMany(models.images, {
foreignKey: 'imagebleId',
scope: {
imageable: 'Order'
}
});
这是Images 模型:
images.belongsTo(models.Order, { foreignKey: "imagebleId" });
【问题讨论】:
-
您确定该列名对于图像表是可成像的吗??
-
您是否 a) 查看过您正在访问的表 b) 查看发送到 DB 的原始 SQL?
-
是的,我检查了表格并且名称是正确的
-
尝试在
images模型关联定义和包含上添加as属性。 -
我在你的问题中找到了答案。谢谢。
标签: mysql node.js sequelize.js sequelize-cli