【发布时间】:2020-01-29 11:23:40
【问题描述】:
如果我使用 React/Vue/Angular 之类的东西,或者只是阻止我的页面在使用纯 JS 提交时加载,我应该在前端为我的元素生成 id 还是应该等待服务器响应有身份证?
一个简单的例子是旧的待办事项列表,我添加了一个待办事项,它必须有一个 id,所以当我想删除它时,我可以将 id 发送到服务器。过去,我曾经生成一个 UUID 并将其发送到服务器以供其使用。我的问题是这是否是一种好的做法,还是我应该采取不同的做法?
【问题讨论】:
-
由于 id 用于唯一标识数据库中的数据,因此您应该始终在服务器端生成它们。此外,这个问题是基于意见的。
-
@PrestonGarvey 是的,我知道它们应该是独一无二的,而且在服务器端生成它们对我来说更安全,但我要问的是我是否正在提交一些东西并将其发送到服务器将其存储在我的数据库中,但不想刷新我的整个页面并通过使用 javascript 推送到我的数组来添加它,如果我想删除它,我还需要稍后发送 id。我应该提交我的表单并等待响应然后添加元素吗?这难道不是违背了不刷新我的页面的全部目的吗?
-
这听起来像是错误的策略。如果您需要纯粹用于客户端需求(例如,未同步条目的唯一 ID 或 React
key),您仍然可以在客户端使用 UUID,但它不能替代数据库 ID,只是因为使用 UUID 可能不方便为了那个原因。 我应该提交我的表单并等待响应然后添加元素吗? - 不一定,出于可用性原因,您可以立即将其添加到 DOM,然后使用收到的ids 更新元素响应,如果出现错误则删除元素。 -
我不明白为什么版主关闭了这个,在客户端和服务器端生成ID有实际的技术原因,不是见仁见智的问题。
-
因此,您可能想在客户端上创建 ID 是有正当理由的。注意这仅对 UUID 有效,对顺序 ID 无效!等待服务器回复 ID 的缺点是,如果由于某种原因您发送了请求,但没有收到回复(连接问题、服务器崩溃等),您将不得不重复请求并冒着在服务器上重复工作的风险。如果您在客户端创建 ID,这个问题就会消失,因为您将使用相同的 ID 重复请求,从而避免重复。这是一个小众用例,但它确实存在。
标签: javascript node.js reactjs vue.js client-server