合并服务器端的两个json对象

时间:2016-04-14 16:19:52

标签: javascript json

我继承了一个快速申请。在应用程序中,我们向http://www.activiti.org/userguide/#bpmnCallActivity传递了大量的局部变量。对于每个页面,我们传递大约30个不变的变量。如果有人改变了,就需要在十几个地方进行改变。这显然很糟糕。

所以我想要做的是存储与真正本地不同的本地变量值。所以我将这些不变的值放在他们自己的文件中,并在每个路径的开头加载文件,如下所示:

'use strict';
var locals = 
{
    indexName: 'Home',
    ...lots more of these...
};
module.exports = { locals : locals };


// in each route files
var local = require('../locals.js');

我可以通过res.render('sensor', local.locals);

使用它

但是我还需要添加特定于页面的值。所以我尝试了local.locals + { ... };,但没有给出错误,甚至没有显示原始值。

然后我尝试了local.locals.concat({...}),但这确实给出了错误(TypeError: Object #<Object> has no method 'concat'),同样适用于extendpush

是否没有方法来扩展或合并两个对象?我需要自己动手吗?

此外,这是使数组全局化的最佳方法吗?我更喜欢将其称为locals,而不是local.locals,因为这只是麻烦。

1 个答案:

答案 0 :(得分:2)

除了来自@mostruash的this graph之外,还有两个非常相似的JS库,它们都提供了对象合并功能(以及许多很好的帮助程序实用程序)。选择一个:

编辑:至于关于local.locals的第二个问题......当然,只需导出对象本身,而不是包装它的对象:

module.exports = locals;

......并在您的路线中:

var locals = require('../locals');
console.log(locals.indexName);