Не удается подключить пользователя к объекту в Apigee Usergrid

При использовании API IOS я вызываю соединение с помощью метода ApigeeDataClient connectEntities. Я передаю тип «пользователи», затем uuid пользователя, затем connectionType «лайки», с типом соединения «songs» и uuid песни.

Пример:

ApigeeClientResponse *response = [_dataClient connectEntities:@"users" connectorID:_apigeeUser.uuid connectionType:@"likes" connecteeType:@"songs" connecteeID:song.uuid];

Когда делаю подключение, пишет успешно, но когда смотрю данные на сервере, то вроде неправильно сохраняет подключение. Например, для песни я вижу:

connecting :likes :/songs/b523a6aa-bb39-11e4-a2bb-35673af856e9/connecting/likes

Похоже, что uuid песни не находится в соединительном пути.

То же самое относится и к соединению, связанному с пользователем. Это uuid пользователя, который, кажется, подключен к тому же пользователю. uuid — это uuid песни, а не пользователя. Когда я вызываю getEntityConnections, например:

ApigeeClientResponse *response = [_dataClient getEntityConnections:@"songs" connectorID:_apigeeUser.uuid connectionType:@"likes" query:nil];

Он возвращает ошибку, говоря: «ожидаемая песня, но получен uuid пользователя.

Сущность c831e1c4-2e6e-11e4-94ce-299efa8c6fd5 не является ожидаемым типом, ожидаемая песня, найденный пользователь"

Заглянув в сам Apigee, в разделе данных я вижу следующий фрагмент:

"connections": {
  "likes": "/users/c831e1c4-2e6e-11e4-94ce-299efa8c6fd5/likes"
}

uuid песни отсутствует. Даже когда я пытаюсь обновить JSON непосредственно на сервере, в основном добавляя uuid песни в конец, он говорит, что он сохранен, но удаляет uuid песни.

Даже простое использование метода curl для установления соединения не работает. Например:

curl -X POST http://api.usergrid.com/peterdj/sandbox/users/bc2fc82a-bfa3-11e4-a994-b19963f177‌​9d/likes/c37f1eaa-bfa3-11e4-9141-97b3510c98e6

Когда я делаю этот звонок, я получаю это

{"action":"post",
  "application":"0baaf590-2c1b-11e4-9bb5-11cb139f1620",
  "params":{
  },
  "path":"/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/likes",
  "uri":"https://api.usergrid.com/peterdj/sandbox/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/likes",
  "entities":[
  {
    "uuid":"c37f1eaa-bfa3-11e4-9141-97b3510c98e6",
    "type":"song",
    "name":"WingSpan",
    "created":1425167080842,
    "modified":1425167080842,
    "bpm":"124",
    "code":"WingSpan",
    "genre":"Progressive House",
    "metadata":{
      "connecting":{
        "likes":"/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/likes/c37f1eaa-bfa3-11e4-9141-97b3510c98e6/connecting/likes"
      },
      "path":"/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/likes/c37f1eaa-bfa3-11e4-9141-97b3510c98e6"
    },
    "title":"Wing Span"
  }
],
  "timestamp":1425246006718,
  "duration":78,
  "organization":"peterdj",
  "applicationName":"sandbox"
}

Обратите внимание, что результирующий путь подключения кажется правильным, когда он возвращается, но когда выполняется еще один завиток GET, например:

curl http://api.usergrid.com/peterdj/sandbox/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d

uuid песни там нет:

{
"action" : "get",
"application" : "0baaf590-2c1b-11e4-9bb5-11cb139f1620",
"params" : { },
"path" : "/users",
"uri" : "https://api.usergrid.com/peterdj/sandbox/users",
"entities" : [ {
   "uuid" : "bc2fc82a-bfa3-11e4-a994-b19963f1779d",
   "type" : "user",
   "name" : "peter",
   "created" : 1425167068578,
   "modified" : 1425167495412,
   "username" : "peterdj",
   "email" : "[email protected]",
   "activated" : true,
   "picture" :"",
     "metadata" : {
     "path" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d",
     "sets" : {
       "rolenames" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/roles",
       "permissions" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/permissions"
     },
     "connections" : {
       "likes" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/likes"
     },
     "collections" : {
       "activities" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/activities",
       "devices" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/devices",
      "feed" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/feed",
      "groups" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/groups",
      "roles" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/roles",
      "following" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/following",
     "followers" : "/users/bc2fc82a-bfa3-11e4-a994-b19963f1779d/followers"
    }
  }
} ],
"timestamp" : 1425311662762,
"duration" : 12,
"organization" : "peterdj",
"applicationName" : "sandbox"
}

Это ошибка с соединениями сущностей с Apigee/Usergrid или я делаю что-то не так?

Спасибо


person Peter Hale    schedule 01.03.2015    source источник
comment
Что произойдет, если вы вызовете curl http://api.usergrid.com/peterdj/sandbox/users/bc2fc82a-bfa3-11e4-a994-b19963f177‌​9d/likes после того, как сделаете этот curl POST?   -  person brandonscript    schedule 01.03.2015
comment
Я разместил то, что возвращается в вызове curl, в исходном сообщении (чтобы его можно было правильно отформатировать).   -  person Peter Hale    schedule 02.03.2015
comment
Хорошо, тогда соединение определенно работает — вы можете увидеть его в метаданных соединения. Если вы выполните GET на той же конечной точке, вы получите тот же ответ.   -  person brandonscript    schedule 02.03.2015
comment
Нет, см. пример выше. uuid получившейся песни обрезан   -  person Peter Hale    schedule 02.03.2015
comment
Вы должны добавить /likes в конце — взгляните на документация по получению подключений. Имо, они тоже довольно сбивают с толку, чтобы обернуть голову :-/   -  person brandonscript    schedule 02.03.2015
comment
Ой, подожди... ты прав. Сейчас проверю, как это работает в IOS, интересно, это какой-то баг в IOS SDK.   -  person Peter Hale    schedule 02.03.2015
comment
Если это определенно не работает должным образом в SDK, вы сможете поднять вопрос на github. страница.   -  person brandonscript    schedule 02.03.2015


Ответы (1)


Что ж, оказывается, благодаря комментариям @remus я разобрался.

В этом вызове: ApigeeClientResponse *response = [_dataClient getEntityConnections:@"songs" connectorID:_apigeeUser.uuid connectionType:@"likes" query:nil];

Соединение должно быть «пользователи», а не «песни». Работает сейчас. Спасибо @remus

person Peter Hale    schedule 03.03.2015
comment
Не могли бы вы принять этот ответ, чтобы вопрос больше не оставался «без ответа»? Спасибо! - person Jeff West; 14.09.2015
comment
Извините за это, проверено, как ответил! - person Peter Hale; 15.09.2015