浏览JSON响应中的关系

我已经编辑我的JSON响应使用这个远程挂钩后。

module.exports = function (server) { // Install a `/` route that returns server status var router = server.loopback.Router(); router.get('/', server.loopback.status()); server.use(router); var remotes = server.remotes(); var modelEnty = server; //Intercept all responses comming from backend remotes.after('**', function (ctx, next) { var output = ctx.result; //if request is comming from Ex /Cutomers,It gives array of objects. if (Object.prototype.toString.call(output) === '[object Array]') { var out = { _embedded: { Coffeeshop: [] } }; output.forEach(function (o) { var objOnly = o.toObject(); var render = {}; for (var key in objOnly) { render[key] = objOnly[key]; render["_links"] = { self: { href: "http://" + modelEnty.get('host') + ":" + modelEnty.get('port') + modelEnty.get('restApiRoot') + "/" + modelEnty.modelName + "s/" + objOnly.id } }; } out._embedded.Coffeeshop.push(render); }); } //if request is comming from Ex /Cutomers/{id},It gives objects. else { var out = {}; var render = {}; var dataOnly = output.toObject(); for (var key in dataOnly) { render[key] = dataOnly[key]; render["_links"] = { self: { href: modelEnty.get('protocol')+"://" + modelEnty.get('host') + ":" + modelEnty.get('port') + modelEnty.get('restApiRoot') + "/" + modelEnty.modelName + "s/" + dataOnly.id } }; } out = render; } ctx.result = out; next(); }); }; 

这工作正常,并从此URL http:// localhost:3000 / api / Customers / 1给出以下结果

 { "name": "string", "_links": { "self": { "href": "http://0.0.0.0:3000/api/undefineds/1" } }, "city": "string", "contact_no": 0, "id": 1, "coffeeShopId": 1 } 

coffeeeShopId是外键ID,它指的是CoffeeShop Model。我不需要显示"coffeeShopId": 1的结果。我需要在那里显示特定的CoffeeShop的URL。像这样的http:// localhost:3000 / api / Customers / 1 /咖啡店

解决scheme应该匹配每个外键的结果,如果他们不止一个。有没有解决这个问题的方法? (如果有很多相对模型,应该dynamic生成http:// localhost:3000 / api / Customers / 1 / CoffeeShops这种结果)