减少跨DB,后端和前端的模型重复

时间:2017-12-02 15:40:56

标签: mysql reactjs flask model

我正在使用由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);

然后在烧瓶应用程序中,假设我想插入pet。然后,烧瓶视图将指向具有以下字段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,那么这将是一个错误。

总之,模型是重复的

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

当然其他人也面临这个问题。

1 个答案:

答案 0 :(得分:-1)

如果要在前端代码中重用模型/后端代码,则需要使用像Uninode这样的框架,它在后端和前端使用相同的编程语言(TypeScript)。

相关问题