第4章 扔回海里 - nswbmw/N-drifter GitHub Wiki

我们在看完一个漂流瓶后,还可以选择扔回海里,下面我们来实现这个功能。

我们设定:扔回海里的漂流瓶生存期不变。即假如一个漂流瓶自扔出后半天被捡到,又被扔入了海里,那么该漂流瓶的生存期剩余为半天。

这里我们可以使用 app.post('/') 接口,而不必创建新的接口。但需要注意的是,用户捡到的瓶子是包含 time 键的,所以扔回海里时带有 time 参数,所以不能也不会省略。扔新瓶子的时候可以省略。

打开 redis.js ,将 throwOneBottle 函数中的:

client.EXPIRE(bottleId, 86400, function () {

修改为:

client.PEXPIRE(bottleId, 86400000 + bottle.time - Date.now(), function () {

这里我们根据漂流瓶的原始时间戳来设置生存期,而不是 1 天。

注意: 假如通过 EXPIRE 或 PEXPIRE 设置一个键的生存期为非正数,则表示立即删除该键。

现在,我们实现了将漂流瓶扔回海里的功能。