У меня есть унаследованное приложение. В приложении мы переходим к res.render массивному списку локальных переменных. Для каждой страницы мы передаем около 30 переменных, которые не меняются. Если это нужно изменить, его нужно изменить в десятке мест. Очевидно, это плохо.Слияние двух json-объектов на стороне сервера
Так что я хочу хранить значения locals, которые не меняются отдельно от действительно локального. Так что я поместил эти без изменения значений в их собственном файле и загрузить файл в начале каждого маршрута, например, так:
'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'
), также для extend
и push
.
Не существует способов расширения или слияния двух объектов? Нужно ли мне кататься?
Кроме того, это лучший способ сделать массив глобальным? Я бы предпочел просто называть его locals
, а не local.locals
, поскольку это просто громоздко.
'Object.assign' – mostruash
Я получаю' TypeError: Object #
После просмотра документации 'Object.assign' я изменил параметры и теперь получаю' TypeError: Object function Object() {[native code]} не имеет метода 'assign''. Я посмотрю на lodash. –