Как читать из хранилища данных с помощью запроса Ancestor и последних библиотек golang

Я хочу прочитать все сущности из хранилища данных (около 6 сущностей/записей).

У меня есть хранилище данных с ключом странного типа, который я пытаюсь понять. Я не могу найти уникальность ключа для выполнения запроса. The table looks like this: Хранилище данных GCP, представляющее данные, которые я хочу прочитать в своем приложении Go

When I click on a record, it looks like this: Ключевой литерал открыт и используется для получения записей в приложении Go

``Я могу выполнить запрос предка в консоли следующим образом:``` GCP Datastore запрошен с использованием Ancestor запрос

Здорово! Итак, теперь я хочу получить эти данные из своего приложения Golang? Но как? Я вижу много решений в Интернете об использовании q.Get(...) // where q is a *Query struct. Любое из этих решений не будет работать, потому что они импортируют google.golang.org/appengine/datastore. Я понимаю, что это устарело и устарело. Поэтому мне нужно решение, которое импортирует cloud.google.com/go/datastore.

Я пробовал что-то в этом роде, но мне не очень повезло: Сначала попробуйте использовать GetAll и запросить

Я попробовал следующее: Вторая попытка использовать запрос предка... еще не готов

Наконец, я попытался получить одну запись напрямую: Наконец я попытался получить запись напрямую

Во всех случаях мой err не равен нулю, и dts, который должен быть заполнен из запроса к хранилищу данных, также равен нулю.

Любое руководство, которое поможет мне понять, как запрашивать этот тип ключа? Я упускаю что-то фундаментальное из-за того, как эта таблица вводится и запрашивается?

Спасибо

Затем я попробовал это:


person Grant Wilson    schedule 11.11.2020    source источник
comment
Пожалуйста, отредактируйте свой пост, включите коды вместо картинки.   -  person JM Gelilio    schedule 12.11.2020


Ответы (1)


Кажется, вам просто не хватает пространства имен

// Merchant Struct
type MerchantDetails struct {
    MEID  string
    LinkTo *datastore.Key
    Title string
}

// Struct array to store in
var tokens []MerchantDetails

// Ancestor Key to filter by
parentKey := datastore.NameKey("A1_1113", "activate", nil)
parentKey.Namespace = "Devs1"

// The call using the new datastore UI. Basically query.Run(), but datastore.GetAll()
keys, err := helpers.DatastoreClient.GetAll(
    helpers.Ctx,
    datastore.NewQuery("A1_1112").Ancestor(parentKey).Namespace("Devs1"),
    &tokens,
)
if err != nil {
 return "", err
}

// Print all name/id from the found values
fmt.Printf("keys: %v", keys)
person James    schedule 12.11.2020