当一个场地被预约后,如何让后面的用户看到该场地已被预约?
发布于 3 年前 作者 yong66 5181 次浏览 来自 官方Issues

如下图,设计了一个场地预约小程序,使用的是云数据库。例如第一个场地已经被我预约了,如何让后面的用户看到本场地已被预约的标签或提示,给场地设定一个状态吗?设定状态的话如何让场地的状态每天进行更新。同时如何将云数据库中Ground集里的场地按照羽毛球场、足球场等类别按不同类在不同页面进行展示。

1 回复
每个场地定义一个唯一key,创建一个配置文件,每个类别对应一组场地<span style="font-size: 14px;">唯一</span>key,例如 足球:\[1001,1002,1003\],羽毛球:\[2001,2002,2003\].,打开不同类别的页签时根据配置取出对应的场地的<span style="font-size: 14px;">唯一</span>key列表,然后遍历列表根据场地唯一key读取云数据库数据显示(云数据库以场地唯一key作为<span style="font-size: 14px;">唯一索引,每个用户访问同一组数据</span>)



实现一组时间函数,包括:获取当前时间戳、传入时间戳返回距今天的天数、传入时间戳返回日期 等,根据场地key读取云数据库数据后(数据结构参考本文最后)遍历state\_list里面的order\_tick,找出时间戳是当天(或者明天、后天、大后天)的那一项进行显示,如order\_id是自己的id则显示自己预约,否则显示被其他用户预约,如果列表里寻找不到当天的时间戳,则显示未被预约。

当点击预约时需要在云函数写验证和修改数据库逻辑(修改时直接修改<span style="font-size: 14px;">state\_list里面时间戳小于当天0点的一项,其他项不变,order\_tick根据预约的日期获取当天(或者明天、后天、大后天)的0点时间戳</span>),小程序调用云函数仅传需要预约的0点时间戳和预约者id,云函数取出数据库的数据进行验证,千万别直接在小程序调用写库接口。

没有自己的服务器只能这样近似的实现了。

云数据库数据格式参考如下:

{

"index" : 1001,	// 足球一号场地

"state\_list": \[

	{

		"order\_tick": 0, // 预定时间戳

		"order\_id": "wx\_id"	// 预定的用户id

	},

	{},// 结构如上

	{},.<span style="font-size: 14px;">// 结构如上</span>

	{}<span style="font-size: 14px;">// 结构如上</span>

\]

}

回到顶部