このエンティティでGoを使用するアプリがあります:
type Product struct {
Name string
Related []*datastore.Key
}
特定のキーに関連するすべての製品を検索することは可能ですか?
このエンティティでGoを使用するアプリがあります:
type Product struct {
Name string
Related []*datastore.Key
}
特定のキーに関連するすべての製品を検索することは可能ですか?
特定のキーに関連するすべての製品を検索することは可能ですか?
キーのスライスを保存しているため、すべてのエンティティを取得しないとこれは不可能です。
ただし、関連する製品を格納する新しい種類 ( ) を作成できますRelatedProducts
(製品を親キーとして使用)。
type Product struct {
Name string
}
type RelatedProducts struct { // We store the the OriginalProduct as parent, so it is not needed as a property
Related *datastore.Key
}
// Create a new relation
func newRelation(c appengine.Context, productKey *datastore.Key, relatedProduct *datastore.Key) {
key := datastore.NewIncompleteKey(c, "RelatedProducts", productKey)
datastore.Put(c, key, &RelatedProduct{Related: relatedProduct})
}
// Get all related products
func getAllRelatedProducts(c appengine.Context, productKey *datastore.Key) []*datastore.Key{
var relatedProducts []RelatedProducts
// Query the relations
query := datastore.NewQuery("RelatedProducts").Ancestor(productKey)
query.GetAll(c, &relatedProducts)
// Loop over relatedProducts and append the data to keys
var keys []*datastore.Key
for i := range relatedProducts {
keys = append(keys, relatedProducts[i].Related)
}
return keys
}