cod*_*sim 8 sql database-schema node.js express odm
我很惊讶为什么这么难找到。
我正在尝试使用适当的 sql 将我的整体架构转换为我的 Node Express 应用程序的 3 层架构。
在架构更改之前1 个文件entry.js 1 个具有业务逻辑的端点 具有原始 sql 的函数,在验证 res.body 对象后调用
后
使用的技术 - 使用 .js 而不是 .ts - Nodejs - Express -
约束 - 我无法使用 postgres 或 sequlize,因为它们不支持我正在使用的专有数据库。
我来尝试回答一下。我是一名数据库工程师,编写了无需使用 ORM 即可直接连接到数据库的 Node.js 应用程序。
1:只要您知道要存储在数据库中的数据的结构,您就可以编写一个 javascript 类,该类具有执行所有更新和类实例化等的方法。例如,您可以有一个user 类,带有构造函数和许多方法,用于在数据库中创建新用户、从数据库中检索用户、更新用户等。您可以在此处和此处阅读有关 javascript 类的更多信息阅读有关 javascript 类的更多信息。
所以这里你的模型只是一个知道如何与数据库交互的类。
您可以将所有 SQL 存储在这里,但我建议您不要这样做,而应在数据库中使用存储过程。这样,如果您需要调整查询或进行更改,您可以仅更改存储过程,而无需创建应用程序的整个版本。您的 DBA 还可以为您修改 SP。
2:取决于你在这里指的是什么。数据库中的架构是功能、业务领域或整个应用程序的容器。就像在企业中一样,您可以有一个销售模式和一个营销模式,或者您可以将所有应用程序逻辑存储在 MySalesApp 模式中。
JavaScript 模型是一项特定的功能及其与数据库的交互。就像用户、人或动物等。在数据库中,所有这些对象(可能会有一个人/用户/动物表,以及许多用于更新、创建等的存储过程)都将存储在里面一个模式。在 MySQL 中,模式也可以是整个数据库。
3:你可以在那里存储你的SQL。但出于前面提到的原因,我会使用存储过程来执行此操作。基本上是因为您可以调整它们以提高效率,而无需重新部署整个应用程序。
4:这也是通过使用存储过程来回答的。因此,您不再需要一堆创建用户的代码,而是拥有一个位于数据库中并为您处理所有事务的 SP。然后您最终会调用一个存储过程,如下所示:
var query = "BB.sp_CreateUser";
var params = [
parseInt(user.userId),
user.firstName,
user.surname,
user.userInitials,
user.telephone,
user.username,
user.password
];
let result = await database.asyncQueryDynamic(query, params);
Run Code Online (Sandbox Code Playgroud)
我在这里进行了一些抽象,因为我正在使用连接池等。但是您可以在此处阅读有关使用存储过程的更多信息。