预订特定房间时出现时间冲突错误



我正在创建一个web应用程序,将有预订系统。在NodeJS上工作,数据存储在MongoDB

如果一个用户想在特定的时间预订一个特定的房间,而另一个人想在不同的时间预订同一个房间,但时间冲突了某些分钟或小时,它应该显示错误。第一个预订房间的人将得到房间,其他人将得到错误。

客房在预定期间必须是空的,否则就会出现错误。

假设我订了7月20日下午3点到5点的房间。现在另一个人想预订7月20日下午4点到6点的同一个房间

我想告诉他这个房间已经被预订了。请再订一个房间。

请在注释中添加代码。

我将在房间集合中添加一个字段。具有

预订的对象数组
bookings: [{ from: "2021-01-15T06:30:00Z", to: "2021-01-15T08:00:00Z" }]

然后,每次任何用户想预订同一个房间时,通过对数据库的查询,检查from或to是否为存储的预订的$gte或$lte。如果是真的,你的throw new Error('Room already booked')

你也可以使用$pull清理数组的旧预订,以避免数组增长太多,这在mongodb中不是一个好的做法

最新更新