有没有办法存储许多JID?

时间:2012-07-13 21:18:48

标签: java eclipse google-app-engine

我的聊天机器人有大约100个客户端的电子邮件ID。我可以制作一个阵列或smnng的JID来存储许多电子邮件吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

您可以将它们存储在App Engine Datastore;您可以按如下方式为用户创建实体(您只需为每个用户执行一次):

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity allowedUser = new Entity("AllowedUser");
allowedUser.setProperty("JID", "[[ user's JID ]]");
datastore.put(allowedUser);

然后,在您的代码中,您可以通过检查其JID是否在数据存储区中来查看是否允许用户访问:

Query q = new Query("AllowedUser");
q.setFilter(new FilterPredicate("JID", Query.FilterOperator.EQUAL, "[[ user JID to check ]]");
PreparedQuery pq = datastore.prepare(q);
if (pq.countEntities(FetchOptions.Builder.withLimit(1)) > 0) {
    // user is allowed
} else {
    // user is not allowed
}

在这里,我们执行查询以使用给定的JID从数据存储区获取所有用户。我们还将结果数量限制为不超过1,因为我们只关心它是否存在(并且不应该有多个具有相同ID的数据)。然后我们看看查询的结果是否有多于零的结果;如果是,那么用户必须在表中并且他们可以访问。如果他们不是,那么他们不会。

请注意,您还可以在管理控制台中添加数据存储区查看器中的实体,因此如果您没有太多,可能更容易走这条路线而不是第一段代码。