Database 如何防止用户插入日期范围内的日期?

Database 如何防止用户插入日期范围内的日期?,database,couchdb,Database,Couchdb,我使用CouchDB同步离线和在线数据。问题是,由于couchDB在客户机和服务器之间没有一个层,所以验证有点差。唯一可以唯一的字段是_id。 例如,如果要确保字段“phone”是唯一的,则需要确保电话号码位于_id(555-666-777_用户名)中的某个位置,“phone”字段是555-666-777 我的问题是:我有一个日历,使事件不能相互重叠。事件有开始时间和结束时间。如何确保用户不会将日期放在开始时间和结束时间之间 一个想法是,不要用开始时间和结束时间制作一个文档。它可以制作各种日期在

我使用CouchDB同步离线和在线数据。问题是,由于couchDB在客户机和服务器之间没有一个层,所以验证有点差。唯一可以唯一的字段是_id。 例如,如果要确保字段“phone”是唯一的,则需要确保电话号码位于_id(555-666-777_用户名)中的某个位置,“phone”字段是555-666-777

我的问题是:我有一个日历,使事件不能相互重叠。事件有开始时间和结束时间。如何确保用户不会将日期放在开始时间和结束时间之间

一个想法是,不要用开始时间和结束时间制作一个文档。它可以制作各种日期在用户期望范围内的文档

示例:用户选择的范围介于2018-09-02和2018-09-10之间,因此我将创建8个文档,其_id由{date}{username}组成


如果您认为couchDB不适合这种类型的东西,我愿意听取建议。

这种检查最好在应用程序逻辑中进行,而不是在数据库层。即使你找到了一种在CouchDB中强制执行的方法,一旦你同步,你可能会发现你有冲突。我知道CouchDB是不同的,但我总是被告知在后端进行验证。移动应用程序是否在前端进行此类验证?谁总是让你在后端进行验证?为什么?如果只有前端验证,用户可以修改源代码吗?也许在C或C++中,这不是问题,但我在使用电子。如果我错了,请纠正我,但在源代码安全方面,Electron只有ASAR,可以轻松地转换为源代码。数据完整性确实应该在服务器上进行验证。但在您的情况下,这还不够,因为您不仅仅讨论数据的有效性,还讨论了重叠,这些重叠只能手动处理。