Я вводил размещение имен в свое приложение, но у меня возникла проблема с одним из моих существующих запросов, который выполняет следующую операцию, чтобы определить, существует ли сущность для данного ключа.Ошибки приложения Google appengine с пространством имен
// c is of type context.Context
c, _ = appengine.Namespace(c, "name")
k := datastore.NewKey(c, "Kind", "", id, nil)
q := datastore.NewQuery("Kind").Filter("__key__ =", k).KeysOnly()
keys, err := q.GetAll(c, nil)
Когда эта команда выполняется с пространством имен применяется к контексту, она возвращает следующее сообщение об ошибке:
datastore_v3 API error 1: __key__ filter namespace is but query namespace is db
Я мог бы просто использовать Get
запрос вместо этого, но я не необходимо фактически получить объект вообще. Кроме того, запросы только на ключ бесплатны!
Update
Кажется, что все запросы терпят неудачу после того, как я ввел пространства имен. В документации не упоминается какой-либо специальная обработка для индексов:
https://cloud.google.com/appengine/docs/go/multitenancy/multitenancy
Вы используете один и тот же контекст, при создании ключа? Похоже, что они не используют одно и то же пространство имен. –
Они создаются в том же месте, я буду обновлять код, чтобы это отразить. – Aaron