我正在使用由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视图将期望具有以下字段的主体:name
,owner
,species
,sex
,birth
和death
,并且还必须知道要插入具有以下内容的架构中这些名称的字段。因此,您需要类似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,而前端则必须对其进行解析。然后,前端将需要期望具有名为name
和owner
的属性的对象。如果它改为预期的petName
,那将是一个错误。总之,该模型是重复的
在数据库表中
查询数据库时在后端逻辑中
在解析发布请求的主体时在后端逻辑中
在前端状态
在发送请求正文时在前端
在从后端渲染响应时在前端
当然,其他人已经遇到了这个问题。
最佳答案
如果要在前端代码中重用模型/后端代码,则需要使用诸如Uninode之类的框架,该框架在后端和前端都使用相同的编程语言(TypeScript)。
关于mysql - 减少跨数据库,后端和前端的模型重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47609545/