Ich habe eine Express-Anwendung geerbt. In der Anwendung übergeben wir eine massive Liste von lokalen Variablen an res.render. Für jede Seite übergeben wir ungefähr 30 Variablen, die sich nicht ändern. Wenn man es ändert, muss es an einem Dutzend Stellen geändert werden. Das ist offensichtlich schlecht.Merge zwei JSON-Objekte auf der Serverseite
Also was ich tun möchte speichern die Werte Einheimischen, die sich nicht von den wirklich lokalen zu ändern. So stellte ich diese Werte in ihrer eigenen Datei nicht ändern und die Datei zu Beginn jeder Route laden, etwa so:
'use strict';
var locals =
{
indexName: 'Home',
...lots more of these...
};
module.exports = { locals : locals };
// in each route files
var local = require('../locals.js');
Und ich kann es verwenden, über res.render('sensor', local.locals);
Allerdings muss ich auch hinzufügen Seitenspezifische Werte. Also habe ich versucht local.locals + { ... };
was nicht während es keinen Fehler gibt, zeigt nicht einmal die ursprünglichen Werte.
Ich habe dann versucht local.locals.concat({...})
aber das macht einen Fehler ausgeben (TypeError: Object #<Object> has no method 'concat'
), ebenfalls für extend
und push
.
Gibt es keine Methoden zum Erweitern oder Zusammenführen von zwei Objekten? Muss ich meine eigenen rollen?
Ist dies auch der beste Weg, ein Array global zu machen? Ich würde es vorziehen, es einfach locals
zu nennen, und nicht local.locals
als das ist nur umständlich.
'Object.assign' – mostruash
Ich bekomme' TypeError: Objekt #
Nachdem ich die 'Object.assign' -Dokumentation betrachtet habe, habe ich die Parameter geändert und jetzt bekomme ich' TypeError: Objekt function Object() {[native code]} hat keine Methode 'assign''. Ich werde auf lodash schauen. –