Получение ошибки с таблицей 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,
},
});
};
PSequel возвращает внешний ключ в таблицу документов в виде:
Имя ключа: documents_user_id_fkey
Столбцы: user_id
Иностранная таблица: users
Внешние столбцы: id
И этот запрос psql возвращает документы для пользователя:
SELECT D
FROM users U
INNER JOIN documents D ON D.user_id = U.id
Этот запрос включает запрос, ДЕЙСТВИТЕЛЬНО ли работает с таблицей 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,
},
});
};
PSequel возвращает внешний ключ на таблицу emails
как:
Имя ключа: emails_user_id_fkey
Столбцы: user_id
Иностранная таблица: users
Иностранные столбцы: id
Почему не documents
таблица ведет себя так же, как emails
?
Примечание. Недавно я изменил ассоциацию Sequelize для документов с имени: id
на user_id
. Нужно ли как-то заново инициировать эту связь?
Изменено с:
models.document.belongsTo(models.users, {
foreignKey: {
name: 'id',
allowNull: false,
},
});
На:
models.document.belongsTo(models.users, {
foreignKey: {
name: 'user_id',
allowNull: false,
},
});