浏览JSON响应中的关系

时间:2016-12-22 09:55:57

标签: javascript json node.js loopbackjs loopback

我在远程挂钩后使用此编辑了我的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();
    });

};

此工作正常。并从此网址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/CoffeeShops

如果它们不止一个,那么解决方案应该匹配结果中的每个外键。是否有解决此问题的方法? (如果有很多相对模型,应该动态生成http://localhost:3000/api/Customers/1/CoffeeShops这种结果)

0 个答案:

没有答案
相关问题