【问题标题】:Can't find entity after saving it in the datastore将实体保存在数据存储中后找不到实体
【发布时间】:2014-03-18 19:51:38
【问题描述】:

调用 put() 后,我得到 id 1952002

当我进入数据存储查看器时,实体不存在。当我查询这个实体时,没有结果

public String addFeedback(String feedbackText) {
    Text TextFeedbackText = new Text(feedbackText);
    Entity entity = new Entity("FeedBack");
    entity.setProperty("feedbackText", TextFeedbackText);
    return "" + datastore.put(entity).getId(); // returns 1952002
}

这个功能曾经很好用。我有一段时间没有使用它,但现在它停止工作了。 我检查了日志,一切都很好

2014-03-18 19:40:00.856 /feedback/add/ 200 258ms 0kb 模块=默认 版本=2 151.228.xxx.xxx - - [18/Mar/2014:12:40:00 -0700] “POST /feedback/add/ HTTP/1.1” 200 33 - - “xxxxx.appspot.com” ms=258 cpu_ms=42 cpm_usd=0.000004 app_engine_release=1.9.0 实例=00cxxxxxxxxxxxxxxxxxx19ec5

有人知道可能是什么问题吗?

【问题讨论】:

  • 你存储的数据的id是只存在于方法的作用域中,还是实际上也存在于方法的范围之外?
  • @Vipar 你能改写一下吗?我不明白
  • 如果datastore.put是google api调用,很可能google已经放弃了对调用的支持或者更改了api而不通知你。
  • 您的代码是正确的。如果您看到 id,则该实体已保存到数据存储区。您是否在查看器的实体种类列表中看到“反馈”?
  • @AndreiVolgin 是的,我看到了反馈。它充满了不久前的实体,但没有任何新实体。我正在使用与设置旧代码相同的代码

标签: java google-app-engine


【解决方案1】:

“它自己开始工作了”

98% 的人在存储实体时遇到这种情况,然后在执行查询时看不到它,这是由于“最终一致性”。

有关完整说明和前进方向,请参阅https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency

【讨论】:

【解决方案2】:

它又开始自己工作了。

可能是 google 遇到了问题,也可能是由于没有使用这个特定的表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多