【问题标题】:When to write user input to the database?何时将用户输入写入数据库?
【发布时间】:2020-04-16 06:30:39
【问题描述】:
这里是新开发者。我正在使用 MongoDB 创建一个 Nodejs 应用程序。您何时将用户输入写入数据库?当他们想要执行 CRUD 操作时是否立即?或者您是否等到他们结束会话来更新他们的更改(同时向他们显示“假”更新视图)?我认为每次写入数据库都不太理想,但我也不想让用户认为他们的更改已保存到数据库中,然后在实际上没有发生的地方发生了一些错误。这在现实世界中是如何处理的?
【问题讨论】:
标签:
node.js
mongodb
session
【解决方案1】:
只要用户想要执行 CRUD 操作,就应该将用户输入写入数据库。
如果它们不是,并且您等待用户终止他们的会话,则应用程序的其他部分可能会尝试更改应该更新的数据。或者您可能希望根据数据库中的当前用户数据在您的应用程序中执行某些操作,但您的数据库反映的是较旧的数据,您的应用程序可能会出现不正确的行为。
有人可能会争辩说,您可以维护应用程序的current state,但在后端代码的情况下,数据库应该始终是您的单一来源。
【解决方案2】:
这就是在“现实世界”(如您所说)中所称的设计决策。这不是任何类似于经验法则或硬性规则的东西。
相反,重要的是在提交之前考虑与此设计相关的所有可能因素:
-
用户期望 - 此应用程序的用户是否期望他们的输入立即被存储?当他们单击“保存”按钮时?他们是否期望自己的输入被销毁?
-
数据保留 - 是否需要在正式提交之前保留用户输入? (这在
-
基础架构 - 底层基础架构能否处理增加的工作量?扩展此应用程序后,基础架构需求是否会超出容量?
-
成本/收益 - 添加此功能是否会导致开发/测试时间超过该功能提供的收益可接受的水平?
这些只是您可能需要考虑的一些。我敢肯定,如果有更多的时间,大多数人至少可以再想出十个。