javascript - 如何处理模型增删改查异常

标签 javascript client-server crud

不久前,我启动了一个 Web 应用程序,前端使用 JavaScript 和 HTML,后端使用 PHP。其中,我将backbone.js 添加到了我的前端框架中。
我了解到在客户端服务器通信中有4种不同类型的操作:创建、更新、删除和读取。
阅读:您发送某个型号的唯一 ID,然后您将收到记录。
创建:您发送记录数据。有时 id 也在客户端创建,有时则在后端创建。
更新:您将具有更改值的模型数据发送到后端。
删除:您发送模型的 id,它将被删除。

但是,在实践中,您会发现存在一些不符合基本模式的特殊情况。

例如:登录、身份验证。

在第一个 Web 应用程序中,我想将这种情况压缩到基本操作中。所以我使用了以下方法:

在我的身份验证中,我需要一些数据,某个用户帐户的一些属性。这就是我的模型。我提供了 ID 并取回了用户模型。
但这种情况下,这种做法并不干净。

您不仅提供 key (用户名),还发送用户名和密码。此外,您不会获得用户数据作为对此请求的答复,而是获得状态(成功/失败)。

现在我开始另一个应用程序。这次我想以一种干净的方式完成我的工作。

你能帮助我完成这次尝试吗?

当我考虑这种干净的方法时,我有以下考虑:

在这种登录情况下,我想通过一次传输发送 2 个模型,并通过一个请求:

第一个模型是身份验证模型。它没有“id”,因为该类只有一个实例。它具有属性“用户名”、“密码”和“认证状态”。后端在应答中填写认证状态。

第二个模型是用户模型。我提供用户名 (id) 并从服务器获取用户数据。

为了为我的登录案例获得一个干净的结构,您对这些最初的想法有何看法。第一种方法更好吗?

你的方法是什么?

最佳答案

发明首字母缩略词 CRUD 是为了描述基本数据库操作。您会发现它通常并不真正适用于应用程序级逻辑。

例如,要对用户进行身份验证,您需要创建一个服务器命令来接受来自客户端的凭据,然后服务器使用数据库操作(可能是读取操作)来检查这些凭据,如果有效,则提供给客户端带有某种可用于将来操作的登录 token 。用户登录本身是一个比纯数据库操作更高级别的功能,并且您可能已经发现,它不适合 CRUD 模型。

因此,如果您尝试将应用程序级函数建模为纯 CRUD 操作,我认为您将会遇到很大的困难。应用程序使用数据库操作来完成其工作,但许多应用程序的许多操作并不直接映射到数据库操作。事实上,甚至可能有一些应用程序级函数根本不涉及数据库,还有许多其他函数使用数据库操作来生成结果,但不直接映射到数据库操作。

您应该将服务器持久数据的接口(interface)视为与应用程序级 API 不同的模型。有时会存在直接相关性(例如设计用于获取数据的应用程序级功能),有时根本不会有太多相关性(例如登录或某种计算功能)。

关于javascript - 如何处理模型增删改查异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30147655/

相关文章:

javascript - 调整大小脚本会放大,而不是缩小。使用行列式会让事情变得紧张

android - 即使 Activity 发生变化,如何保持 android 客户端连接到服务器并将数据发送到服务器?

c - 使用 recv 填充垃圾的缓冲区

java - 从 JPA 实体生成 CRUD

javascript - 如何让 Aurelia 准确匹配路线?

javascript - 内容脚本在 Edge 扩展中不起作用

javascript - 更改标题附加而不是重写

java - 在服务器上关闭 AtomicBoolean ching 太晚了(Java)

node.js - 获取 http ://localhost:4000/rugs 500 (Internal Server Error)

php - 以编程方式设置 WooCommerce 用户账单和发货国家/地区