2016-12-16 20 views
1

Loopbackを使用して簡単なAPIを作成しました。これはうまく動作し、このURLから以下の結果を得ます。 http://localhost:3000/api/CoffeeShopsループバックからカスタムJSONレスポンスを取得

[ 
    { 
    "name": "Coffee shop 1", 
    "city": "City one", 
    "id": 1 
    } 
] 

私は、ループバックミドルウェアを使用することにより、このテンプレートにこのJSONを変更する必要があります。 JSONを作成するには、次のコード

{ 
    "_embedded": { 
    "CoffeeShops": [ 
     { 
     "name": "Coffee shop 1", 
     "city": "City one", 
     "_links": { 
      "self": { 
      "href": "http://localhost:3000/CoffeeShops/1" 
      }, 
      "CoffeeShop": { 
      "href": "http://localhost:3000/CoffeeShops/1" 
      } 
     } 
     } 
    ] 
    } 
} 

答えて

2

いっそのミドルウェアよりも、あなたが使用することができますremote hook

使用afterRemoteは、ログ、を変更フックまたはそれ以外の場合は結果をリモートメソッドを送信してから、リモートクライアントに送信します。 afterRemoteフックは、リモートメソッドの実行後に実行されるため、リモートメソッドの結果にアクセスできますが、入力引数は変更できません。

coffee-shop.js内の次のコードは、私は、ループバックミドルウェアで、このソリューションを接続する方法を説明することができますトリック

CoffeeShop.afterRemote('find', function(ctx, output, next) { 
    ctx.result = { 
    _embedded: { 
     CoffeeShops: [{ 
     name: output.name, 
     city: output.city, 
     _links: { 
      self: { 
      href: "http://localhost:3000/CoffeeShops/" + id 
      }, 
      CoffeeShop: { 
      href: "http://localhost:3000/CoffeeShops/" + id 
      } 
     } 
     }] 
    } 
    }; 
    next(); 
}); 
+0

それは動作します、ありがとうございます。 – IsuruAb

-1

用途:

obj_list = [ { 'name': 'Coffee shop 1', 'city': 'City one','id': 1},...] 

dict_template = { '_embedded': { 'CoffeeShops': [] } } 

for object in obj_list: 
    shop_dict = { '_links' : { 'self':{}, 'CoffeeShops':{} }} 
    shop_dict['name'] = object['name'] 
    shop_dict['city'] = object['city'] 
    link = 'http://localhost:3000/CoffeeShops/' + str(object['id']) 
    shop_dict['_links']['self']['href'] = link 
    shop_dict['_links']['CoffeeShops']['href'] = link 
    dict_template['_embedded']['CoffeeShops'].append(shop_dict) 

print dict_template 
+0

をしますか? – IsuruAb

+0

これで、PythonのスニペットでJavascriptの質問に答えています。それは大胆です – Overdrivr

関連する問題