2

appengine をすべてセットアップし、ローカルホストで動作するようにしました。

Entity greeting3 = new Entity(KeyFactory.createKey("World", "world3"));
greeting3.setProperty("raw", "2.2 # # # .");
datastore.put(greeting3);

エンティティを追加すると、コンソールにエンティティが追加されたことがわかります。私はそれから使用します

Query q = new Query("World");
PreparedQuery pq = datastore.prepare(q);
for (Entity result : pq.asIterable()) {
    resp.getWriter().println(result);
}

エンティティを取得します。localhost では完璧に動作しますが、サーバーでは、追加されたすべてのエンティティのリストを受け取ることができません。ただし、最初のコードで追加されます。私も使っています

e = datastore.get(KeyFactory.createKey("World", req.getParameter(k)));
resp.getWriter().println(e.getProperty("raw"));

ローカルホストでも同様に機能しますが、インターネットでは「エンティティが見つかりません」という例外がスローされます。手動でデータストア インデックスを追加しようとしましたが、役に立ちませんでした。私は一日中働いていて、今は本当に動揺しています:(昨日もうまくいったと確信しています...助けてくださいありがとう

4

2 に答える 2

0

私もこれを経験しましたreq.getParameter(k)が、それがあなたが期待したものとは異なる場合は、クエリを再度実行する必要があります。データストアはそれほど高速ではないため、Memcache が存在します。

アプリケーションですぐにデータを提供したい場合は、Memcache API を使用してデータを「キャッシュ」する必要があります。

于 2013-04-09T08:08:25.287 に答える
0

エンティティをデータストアに配置した直後にクエリが実行される場合、この問題は、App Engine データストアが「即時整合性」を保っていないことが原因である可能性があります。それは「結果整合性」です

クエリを実行する前に数秒 (おそらく 10 秒?) 待って、これをテストできます。

これがバグである場合は、ドキュメントのアプリ エンジン データストアの概要を確認してください。

于 2013-03-29T23:22:23.790 に答える