确认数据存储区中的更新实体

时间:2014-06-12 15:40:52

标签: java android google-app-engine datastore

我知道这是一个基本问题,但我无法在任何地方找到答案,我不可能通过反复试验来做到这一点。我有Android应用程序,想要通过+1更新数据存储区中的实体。我向谷歌应用引擎发送请求,我获得实体,更新它+1,将实体放到数据存储区并使用response.getWriter().println("OK");向Android应用程序发送确认,一切正常,但如果Android应用程序在发送请求后失去连接怎么办,谷歌应用引擎将获得更新实体+1的请求,但确认不会触及Android应用。即使我在Android应用中未获得"OK"确认,实体也会更新+1吗?如果是,那么防止这种情况的最佳做法是什么?

提前致谢

代码:

public class Score extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String update = req.getParameter("update");  //update = 1
        resp.getWriter().println(add(Integer.valueOf(update)));
    }

    public String add(int update) {
        // ...
        Entity entity = datastore.get(key);
        int score = ((Number) entity.getProperty("Score")).intValue();
        score += update;
        entity.setProperty("Score", score);
        datastore.put(entity);
        return "OK";
    }
}

1 个答案:

答案 0 :(得分:0)

无论确认是否到达客户端,只要您告知数据存储区,实体就会立即更新。

我不确定你为什么要阻止它(这是一个非常不寻常的要求),但解决方案需要两个调用:一个用于准备更改,第二个用于提交。