Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 使用objectify将所有实体成功存储在数据存储中,向客户机提供响应的最佳方式是什么_Google App Engine_Google Cloud Datastore_Objectify - Fatal编程技术网

Google app engine 使用objectify将所有实体成功存储在数据存储中,向客户机提供响应的最佳方式是什么

Google app engine 使用objectify将所有实体成功存储在数据存储中,向客户机提供响应的最佳方式是什么,google-app-engine,google-cloud-datastore,objectify,Google App Engine,Google Cloud Datastore,Objectify,我在数据存储上存储了多个相同类型的实体,只需从客户端点击一次。 以下是模型类: @Entity public class Student { @Id Long id; @Index String status; String time; @Ignore String log; @Ignore List<Student> StudentList

我在数据存储上存储了多个相同类型的实体,只需从客户端点击一次。 以下是模型类:

@Entity
public class Student {
        @Id
        Long id;
        @Index
        String status;
        String time;
        @Ignore
        String log;
        @Ignore
        List<Student> StudentList;
}
我必须根据客户的单个请求存储数千名学生。为此,我有一张excel表格,里面有50000多名学生。在客户端,我阅读excel表格并请求将所有学生存储在数据存储中。到目前为止,我成功地从excel表格中存储了25名学生,该表格只有25名学生

问题: 1) 在客户端的一次点击中存储大量同类实体是否正确

2) 从读写操作的角度来看,如何在后端实现这一目标

3) 我如何向客户机响应所有实体是否成功存储在数据存储中?目前我正在返回存储的实体,如
ofy().load().entities(studentList),,

但是我不想给出存储的实体作为响应,因为有大量的实体

1-据我所知,这是存储大量同类实体的正确方法。也许还有其他更好的方法。如果有人找到更好的方法,请告诉我

2-在插入期间,写入操作取决于索引,存储到数据存储。由于有一个索引字段,因此将有两个写入操作用于存储单个实体。1用于索引,1用于将该实体存储在数据存储上

3-客户端:我做了与我在评论中提到的相同的事情,首先从excel表格中读取所有学生数据,每个学生也有卷号。从excel中读取数据时,列出卷号。将列表转换为特定顺序,例如升序或降序。将卷号连接起来,形成一个较长的单字符串。使用任何哈希算法计算该字符串的哈希值,并将该哈希值与学生数据一起以查询参数(或路径参数或其他方式)发送到服务器

服务器端:插入学生数据,使用y()加载()实体(studenList)加载插入的实体

从加载的学生实体中形成卷号列表。将列表转换为与客户端相同的顺序,即升序或降序。 将卷号连接起来,形成一个较长的单字符串。使用相同的哈希算法计算该字符串的哈希。 现在将此散列与查询参数中来自客户端的散列进行比较。如果两个哈希值相等,则来自客户端的所有学生数据都已成功存储在数据存储中。
您还可以将此服务器端哈希发送到客户端,以便客户端也可以进行验证。

我的方法是,您可以使用保存操作的结果,如下所示:

Map<Key<Student>, Student> = ofy().save().entities(student.getStudentList()).now(); 
Map=ofy().save().entities(student.getStudentList()).now();

您可以遍历并获取地图中的所有关键点。然后,您可以通过API调用从列表中的键返回所有生成的ID。此外,如果发生错误,objectify会引发运行时异常。

您得到答案了吗?还没有。但我有一些想法,比如在客户端计算数据的校验和(客户端校验和),然后在向服务器发出请求时将校验和发送到服务器,然后我将再次计算插入数据的校验和(服务器校验和),并将两者匹配。若两个校验和相等,则表示来自客户端的所有实体都已成功存储在数据存储中。在计算客户端和服务器端的校验和之前,可能需要对数据进行排序。这只是我想的一种方式,在成功实施后将发布答案。
Map<Key<Student>, Student> = ofy().save().entities(student.getStudentList()).now();