只有在当前值满足前置条件时才需要更新列。我尝试了以下,
def acceptDelivery(implicit sc: SecurityContext, ar: AcceptRequest) : Future[DeliveryResponse] = {
for {
d <- Database.DeliveryForVendorModel.findDelivery(ar) if d.isDefined && d.get.isPending
_ <- Database.acceptDelivery(d.get, sc.ownerId, sc.ownerName)
} yield buildAcceptResponse(d)
}
但是,如果第一个未来没有实现,则抛出异常。 findDelivery方法返回Future[Option[T]]
,其中T gas是isPending方法。