I edited my JSON response using this after a remote connection.
module.exports = function (server) {
var router = server.loopback.Router();
router.get('/', server.loopback.status());
server.use(router);
var remotes = server.remotes();
var modelEnty = server;
remotes.after('**', function (ctx, next) {
var output = ctx.result;
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);
});
}
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();
});
};
This works great. And gives below the result from this 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 is a foreign key identifier, and it belongs to the CoffeeShop model. I do not need to show "coffeeShopId": 1as a result. I need to show the URL of this particular CoffeeShop.
http: // localhost: 3000 / api / Customers / 1 / CoffeeShops
The solution must match each foreign key as a result, if there are more than one. Is there any solution for this problem? (should dynamically generate http: // localhost: 3000 / api / Customers / 1 / CoffeeShops this kind of results if there are many relative models)