除非我克隆,否则无法创建JSON对象的实例

时间:2015-11-16 20:59:48

标签: javascript json node.js

我第一次尝试创建.json对象的实例时陷入了一个问题。

例如,假设在我的节点项目中我有这个模型:

city.json

{
    "links": {
        "self": null,
        "parent": null
    },
    "id": null,
    "name":{
        "full": null,
        "abbreviated": null,
        "urlFriendlyName": null
    },
    "countries": null
}

我发现在我的代码中,当我通过模块顶部的require包含它时,如果我尝试不止一次使用它,我就无法完成并且最终必须创建一个实例就像这样:

我有一个实用程序模块可以执行此操作:

modelUtilities.js

var cityEntity = require('../src/entities/city');


module.exports = {
    "createCityEntity": createCityEntity
    .. and a bunch more helpers
};    
function createCityEntity(cityId, stateId, fullname, abbreviatedName, urlFriendlyName){
    var city = clone(cityEntity);

    city.id = cityId;
    city.name.full = fullname;
    city.name.abbreviated = abbreviatedName;
    city.name.urlFriendlyName = urlFriendlyName;
    city.links.self = "/cities/" + cityId;
    city.links.parent = "/states/" + stateId;

    return city;
}

function clone(obj){
    return JSON.parse(JSON.stringify(obj));
};

我不记得确切的问题,但我知道我必须做这个克隆,否则我无法得到该.json对象的多个不同实例,以便在我的SUT代码中使用,也可以用于在我的测试中重用,因为我使用该结构也为存根数据创建了一个虚拟城市。

任何想法,如果我只是在考虑.json错误或者这是否正常?或者不是?

0 个答案:

没有答案