documents
表出现错误包括:Include unexpected. Element has to be either a Model, an Association or an object.
:
const users = await db.users.findAll({
where: {
profile_photo: { [Op.ne]: null },
},
include: [
{
model: db.documents,
}
],
});
documents
相关部分定义和关联:const document = sequelize.define(
'document',
{
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.UUID,
defaultValue: sequelize.literal('uuid_generate_v4()'),
},
user_id: {
type: DataTypes.UUID,
references: {
model: 'users',
key: 'id',
},
},
}
);
document.associate = function(models) {
models.document.belongsTo(models.users, {
foreignKey: {
name: 'user_id',
allowNull: false,
},
});
};
PSquel 将文档表上的外键返回为:
键名:
documents_user_id_fkey
列:
user_id
国外表:
users
国外栏目:
id
这个 psql 查询为用户返回文档:
SELECT D
FROM users U
INNER JOIN documents D ON D.user_id = U.id
此查询包括查询 DOES 与
emails
表一起工作,并为用户返回电子邮件:const users = await db.users.findAll({
where: {
profile_photo: { [Op.ne]: null },
},
include: [
{
model: db.emails,
}
],
});
emails
相关部分定义和关联:const Emails = sequelize.define(
'emails',
{
id: {
type: DataTypes.UUID,
defaultValue: sequelize.literal('uuid_generate_v4()'),
primaryKey: true,
},
user_id: {
type: DataTypes.UUID,
references: {
model: 'users',
key: 'id',
},
allowNull: false,
},
);
Emails.associate = models => {
models.emails.belongsTo(models.users, {
onDelete: 'CASCADE',
foreignKey: {
name: 'user_id',
allowNull: false,
},
});
};
PSquel 返回
emails
表上的外键为:键名:
emails_user_id_fkey
列:
user_id
国外表:
users
国外栏目:
id
为什么
documents
表的行为与 emails
不同?注意:我最近确实将 Documents 的 Sequelize 关联从 name:
id
更改为 user_id
,我是否需要以某种方式重新初始化该关联?它是从:
models.document.belongsTo(models.users, {
foreignKey: {
name: 'id',
allowNull: false,
},
});
至:
models.document.belongsTo(models.users, {
foreignKey: {
name: 'user_id',
allowNull: false,
},
});
最佳答案
您必须引用正确的模型名称。你要么把它改成这样:
const users = await db.users.findAll({
where: {
profile_photo: { [Op.ne]: null },
},
include: [
{
model: db.document,
}
],
});
或者你把它改成这样:
const document = sequelize.define('documents', ..
如果定义为
document
,则必须包含 document
而不是 documents
。
关于node.js - Sequelize : "Include unexpected" on associated table query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61190038/