您可以使用Batch operations
。
下面是我suggesion獲得與特定用戶的所有活動功能。
注
- 要minimaize查詢成本,下面的代碼使用
Keys-only queries
。 而且它應該是Votes
的關鍵是這樣的:{user_id}_{feature_id}
。
- 下面的代碼是Golang的虛擬代碼。
1)獲取Keys-only query
與特定用戶投票(這是更好地增加限制成本):
query := datastore.NewQuery("Votes").Filter("UserID =", 123).KeysOnly().Limit(100)
keys, err := client.GetAll(ctx, query, nil)
2)獲取FeatureID和通過分裂投票的關鍵:
featureIDs := make([]*datastore.Key, len(keys))
for i, key := range keys {
s := strings.Split(key, "_")
userID, featureID := s[0], s[1]
featureIDs[i] = &datastore.Key{ Name:featureID }
}
3)通過Batch operation
獲取功能:
var features []*Features
client.GetMulti(ctx, featureIDs, features)
4)過濾功能,通過主動標誌:
for _, f := range features {
if f.active {
// this is active feature.
}
}
對不起,我遲到的答案。可悲的是,現在似乎是最好的辦法。 – ElFitz