我有一个应用程序将用户上传的电子表格存储为 PostgreSQL 中的表。Dataset
每次用户上传电子表格时,我都会在包含物理表名称、别名和所有者的表中创建一条记录。我可以使用检索某个数据集信息
GET domain.com/v1/Datasets/{id}
AFAIK,行和物理表之间的关系Dataset
不能由 FK 强制执行,或者至少我还没有看到有人在 PostgreSQL 的 information_schema 上创建 FK,并且 FK 不能删除表,或者他们可以吗?因此,通常会有孤立表,或者 Dataset
该点中的记录指向不再存在的表。我已经通过业务逻辑和清理任务来管理这个。
现在,要访问其中一个物理表,例如一个名为nba_teams
I 的表,我需要在环回中声明一个 NbaTeams 模型并重新启动应用程序,然后使用查询其记录
GET domain.com/v1/NbaTeams/{id}
但这无法扩展,特别是如果我每天已经有 100 次上传。所以从我的立场来看,有两条路可以走:
1.- 创建一个模型,然后添加 4 个接受表名作为字符串的自定义方法,并通过原始查询对该表名执行下一个 CRUD 操作。例如,要列出记录:
GET domain.com/v1/Datasets/getTable/NbaTeams
或者,更新一个团队
PUT domain.com/v1/Datasets/getTable/NbaTeams/{teamId}
这听起来不优雅,但应该有效。
2.- 创建一个接受表名作为字符串的自定义方法,该方法反过来创建一个临时模型并将 HTTP 动词和其余参数转发给它
dataSource.discoverAndBuildModels('nba_teams', {
owner: 'uploader'
}, function (err, models) {
console.log(models);
models.NbaTeams.find(function (err, act) {
if (err) {
console.error(err);
} else {
console.log(act);
}
dataSource.disconnect();
});
});
第二个我还没有开始工作,我不知道它可能有多少开销,但我确信它是可行的。
所以在我深入挖掘之前,我来问:有人处理过这种行到表的关系吗?这方面有哪些好的做法?