멀티 테넌트 지원을 위한 Sequelize에서 데이터베이스 동적 정의 잘못된 쿼리 구문 반환
Shared Database Isolated Schema 원칙으로 SAAS(Multi-tenant Application) 작업 중입니다.
https://github.com/renatoargh/data-isolation-example 의 솔루션을 사용해 보았습니다.
이 기사 https://renatoargh.wordpress.com/2018/01/10/logical-data-isolation-for-multi-tenant-architecture-using-node-express-and-sequelize/ 에서
스키마 옵션을 사용한 후속 모델입니다.
module.exports = (sequelize, DataTypes) => {
const Task = sequelize.define('Task', {
id: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
field: 'Id'
},
description: {
type: DataTypes.STRING(100),
allowNull: false,
field: 'Description'
},
done: {
type: DataTypes.BOOLEAN,
allowNull: false,
default: false,
field: 'Done'
},
taskTypeId: {
type: DataTypes.INTEGER,
allowNull: true,
field: 'TaskTypeId'
},
userId: {
type: DataTypes.INTEGER,
allowNull: true,
field: 'UserId'
}
}, {
freezeTableName: true,
tableName: 'Tasks',
createdAt: false,
updatedAt: false
})
Task.changeSchema = schema => Task.schema(schema)
Task.associate = models => {
Task.belongsTo(models.TaskType, {
as: 'taskType',
foreignKey: 'taskTypeId'
})
}
return Task
}
그리고 이 문제는 그만 두십시오.
SELECT
`Task`.`Id` AS `id`,
`Task`.`Description` AS `description`,
`Task`.`Done` AS `done`,
`Task`.`TaskTypeId` AS `taskTypeId`,
`Task`.`UserId` AS `userId`,
`taskType`.`Id` AS `taskType.id`,
`taskType`.`Description` AS `taskType.description`
FROM `tenant_1.Tasks` AS `Task` LEFT OUTER JOIN `shared.TaskTypes` AS `taskType`
ON `Task`.`TaskTypeId` = `taskType`.`Id`
WHERE `Task`.`UserId` = 1;
보다시피 'tenant_1'에서.mysql의 tasks'는 잘못된 구문입니다. 이 구문은 'tenant_1'의 것이어야 합니다.'과제'
'tenant_1'을(를) 변경하는 방법입니다.tasks'부터 'tenant_1'까지입니다.'과제'
MySQL을 사용하고 있습니까?만약 그렇다면, 그것이 예상되는 행동입니다.
모델의 설명서에서.스키마:
이 모델에 스키마를 적용합니다.포스트그레스의 경우 실제로 스키마가 테이블 이름 앞에 배치됩니다.
"schema"."tableName"
, 스키마는 mysql 및 sqlite의 테이블 이름 앞에 붙여집니다.'schema.tablename'
.
언급URL : https://stackoverflow.com/questions/54018609/dynamic-define-database-in-sequelize-for-multi-tenant-support-return-wrong-query
'IT' 카테고리의 다른 글
Oracle에서 날짜 부분만을 기준으로 두 DATE 값을 비교하는 방법은 무엇입니까? (0) | 2023.09.10 |
---|---|
phpmyadmin 서버 유형에서 중복 레코드 찾기:마리아DB (0) | 2023.09.10 |
MariaDB 기존 열의 새 열 데이터에 삽입 (0) | 2023.09.10 |
Android에서 FFmpeg (0) | 2023.09.10 |
속성을 비공개로 하고 읽기 전용 속성을 만들어야 하는 시기는 언제입니까? (0) | 2023.09.10 |