我正在使用由MySQL DB支持的flask(无ORM)构建Web应用程序,并在前端进行React。我担心的是,我的模型在MySQL,Flask和React中都是重复的。例如,说我有以下MySQL表

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);


然后,在flask应用程序中,假设我想插入pet。然后,flask视图将期望具有以下字段的主体:nameownerspeciessexbirthdeath,并且还必须知道要插入具有以下内容的架构中这些名称的字段。因此,您需要类似body = request.get_json()然后是'INSERT INTO pet (name, owner, ...) VALUES ({name}, {owner}, ...)'.format(**body)

在前端,我们必须保持类似于后端的状态,例如

this.state = {
  name: ...,
  owner: ...,
  ...
}


如果说这些值来自表单。然后我们必须通过发送这样的主体来发布这些值

{
  name: this.state.name,
  owner: this.state.owner,
  ...
}


除了重复之外,它似乎还容易出错,如果前端不小心发送了ownerName而不是owner怎么办?然后后端尝试使用名为owner的字段来解析正文,但找不到任何内容。

假设相反,后端正在将数据返回到前端,例如执行SELECT name, owner FROM pet。然后,后端将响应序列化为JSON,而前端则必须对其进行解析。然后,前端将需要期望具有名为nameowner的属性的对象。如果它改为预期的petName,那将是一个错误。

总之,该模型是重复的


在数据库表中
查询数据库时在后端逻辑中
在解析发布请求的主体时在后端逻辑中
在前端状态
在发送请求正文时在前端
在从后端渲染响应时在前端


当然,其他人已经遇到了这个问题。

最佳答案

如果要在前端代码中重用模型/后端代码,则需要使用诸如Uninode之类的框架,该框架在后端和前端都使用相同的编程语言(TypeScript)。

关于mysql - 减少跨数据库,后端和前端的模型重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47609545/

10-12 05:18