猿问

根据切片属性过滤实体

我有一个与此实体一起使用Go的应用程序:


type Product struct {

  Name string

  Related []*datastore.Key

}

是否可以找到与给定密钥相关的所有产品?


幕布斯7119047
浏览 202回答 1
1回答

梵蒂冈之花

是否可以找到与给定密钥相关的所有产品?当您存储一片键时,如果不检索所有实体,则不可能做到这一点。但是,您可以创建一种新类型(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 relationfunc 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 productsfunc 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}
随时随地看视频慕课网APP

相关分类

Go
我要回答