我想通过Google App Engine(Objectify)创建一个Api方法,该方法返回我关注的人员帖子的CollectionResponse,按日期降序排序。
我有一个实体Post
和实体Profile
,两者都以Long id
为密钥。
Post
实体具有以下属性,指定它具有父级:
@Parent
private Key<Profile> profileKey;
Profile
实体具有以下属性,其中存储了该个人资料所关注人员的List
个id
:
// Ids of the profiles this person follows
private List<Long> following = new ArrayList<>(0);
我当时在想,我可以这样做:
List<Long> idsProfile = profile.getFollowing();
Query<Goal> query = ofy().load().type(Post.class)
.order("-createdDate")
.filterKey("in", idsProfile)
.limit(Constants.DEFAULT_LIST_LIMIT);
if (cursor != null) {
query = query.startAt(Cursor.fromWebSafeString(cursor));
}
QueryResultIterator<Goal> queryIterator = query.iterator();
List<Post> postList = new ArrayList<Post>(Constants.DEFAULT_LIST_LIMIT);
while (queryIterator.hasNext()) {
postList.add(queryIterator.next());
}
return CollectionResponse.<Post>builder().setItems(postList).setNextPageToken(queryIterator.getCursor().toWebSafeString()).build();
我在这里做的是获得List
id
个Profile
个人正在关注并尝试查询和过滤List
在Post
上只能返回这些用户的{
"error": {
"errors": [
{
"domain": "global",
"reason": "badRequest",
"message": "java.lang.IllegalArgumentException: __key__ filter value must be a Key"
}
],
"code": 400,
"message": "java.lang.IllegalArgumentException: __key__ filter value must be a Key"
}
}
。
但是我收到了这个错误:
.filterKey("in", idsProfile)
我一直在public interface IRepository<TEntity, in TKey> where TEntity : class
{
TEntity Get(TKey id);
void Save(TEntity entity);
void Delete(TEntity entity);
}
位内尝试不同的事情,但似乎无法让它发挥作用。
有人可以帮助我完成这项工作吗?谢谢!