0

在我的应用程序中,用户有朋友。用户可以发送发送请求并确认好友(由状态属性标记)并可以删除好友。一个用户只能有X个朋友和X个待处理的朋友。为了存储这个我有一个不存在的类,那么有一个叫做Friends的子实体。看起来是这样的:如何在实体组上执行这些操作

朋友

-Key((NonExistantKindParent,my_username), friends_username) 
-status 
-created_date 

的关键在于它确实存在的祖先,而id是用户的用户名。儿童实体将成为该用户的所有朋友。因此,每一次友谊都会被储存两次,一次是给朋友1,一次是给朋友2。他们在实体组中,因此它们可以保持一致,并且我可以执行交易(例如,如果用户添加了需要写给朋友的请求的朋友和被请求者朋友的朋友)。还有更多的操作,我需要的,但我想知道怎么做在下面的话,我可以申请这方面的知识,我需要其他操作:

  • 的日期要获得所有用户的朋友秩序他们被创建(只需要朋友的用户名)。

  • 获取用户确认的所有朋友(status ='确认')。

阅读文档:https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.30.3/datastore/query?method=select我很困惑如何查询entitiy组。对于这些查询中的一些我需要应用属性过滤器和祖先过滤器它看起来像但不确定如何?如果我需要查询非实体组,则文档非常有用。

回答

1

使用query#filter应用属性过滤器,并使用query#hasAncestor设置祖先查询。

+0

例如,要获得所有用户的朋友,我不需要祖先,我需要的后代。我会怎么做,而不是这些我不认为过滤器会这样做? – user2924127

+0

'hasAncestor'会返回祖先的后代。它是说“归还有这个祖先的记录”。 '过滤器'是说“返回这个属性等于这个值的记录。” – Stephen

+0

是的,我知道,但如何一起使用它们?例如我做了这样的事情:var query = datastore.createQuery('Friends')。hasAncestor(datastore.key(['FriendParent','my_username']))。filter('status','pending');它应该返回一些数据,但它返回的是空数组[]。 – user2924127

相关问题