bir*_*ham 8 postgresql foreign-keys sequelize.js
我有关于自定义架构的约束的问题.我的应用程序为每个客户端的名称(即clienta,clientb,...)创建一个新的/单独的模式.某些表具有外键约束,但它们不适用于默认公共模式以外的模式.例如,假设有一个名为clienta的模式,它有项目和任务表,模型任务有一个belongsTo(models.Project)关联(即项目表primary_key
是一个foreign_key
表任务.问题从这里开始:当试图创建一个记录在表任务中出现错误,foreign key violation error... Key (project_id)=(1) is not present in table "projects...
即使项目表具有id = 1的相应记录.如果这是sequelize
图书馆本身的限制或者我在配置中遗漏了某些内容,我会措辞吗?
Sequelize配置
"development": {
"database": "my_app",
"host": "127.0.0.1",
"dialect": "postgres",
"operatorsAliases": "Sequelize.Op",
"dialectOptions": {
"prependSearchPath": true
},
"define": {
"underscored": true
}
}
Run Code Online (Sandbox Code Playgroud)
创建函数示例:
models.Task.create({...args}, { searchPath: 'clienta' })
NB一切都在公共架构中按预期工作.
小智 1
同步方法API列出了与 DB 模式相关的两个选项:
options.schema - 应在其中创建表的架构
options.searchPath - 设置 searchPath 的可选参数 (Postgresql)
当使用默认模式以外的模式并且已创建模型之间的关联(例如使用 ownTo)时,设置 searchPath 以保存目标表模式的名称非常重要。按照postgresql 中 search_path中的解释,不指定 searchPath 将具有引用默认模式(通常为“public”)中的表(如果存在)的约束。