0

IOS API を使用する場合、ApigeeDataClient connectEntities メソッドを介して接続するための呼び出しを行っています。タイプ「users」、次にユーザーの uuid、connectionType「likes」、接続先タイプ「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 ではなく、曲の 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 を実行すると、次のようになります。

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" : "asdf@adf.com",
   "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 とのエンティティ接続のバグですか、それとも何か間違っていますか?

ありがとう

4

1 に答える 1

1

まあ、@remus のコメントのおかげで、私はそれを理解しました。

この呼び出しでは: ApigeeClientResponse *response = [_dataClient getEntityConnections:@"songs" connectorID:_apigeeUser.uuid connectionType:@"likes" query:nil];

接続は「曲」ではなく「ユーザー」である必要があります。今すぐ動作します。ありがとう@レムス

于 2015-03-03T20:06:22.347 に答える