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

相關問題