2017-08-08 4 views
0

Ich benutze KeystoneJS mit Lenker für die Ansichten. Ich habe versucht, eine Liste von Unternehmen aus MongoDB in der Navigationsleiste zu laden, ohne Erfolg. Ich weiß, wohin ich gehe, um die navLinks zu aktualisieren, und ich kann die Firmen von mongodb auf einer einzigen Seite laden. Ich möchte die Liste der Firmen auf allen Seiten in der Navigation laden und die Liste der Kompanien ist nicht statisch. Wo würde ich meinen Code speichern, um die Daten zu laden, bevor die Navigation gerendert wird?Wie kann ich Daten von Mongo vor dem Laden der Seite mit KeystoneJS laden?

Antwort

0

Sie können Ihre eigenen lokalen Variablen in der 'initLocals' Middleware in Routen/middleware.js, die vor dem Route-Controller laufen hinzufügen ausgeführt:

Routen/middleware.js

exports.initLocals = function(req, res, next) { 

    var locals = res.locals; 

    locals.user = req.user; 

    // Add your own local variables here 

    next(); 

}; 

Kasse des Übliche Route Middleware Abschnitt in dem Keystone.js docs: http://keystonejs.com/docs/getting-started/

0

I Fina Ich habe es zur Arbeit

exports.initLocals = function (req, res, next) { 
     res.locals.navLinks = [ 
      { label: 'Accueil',   key: 'home',  href: '/' }, 
      { label: 'Projets',   key: 'projects', href: '/projects' }, 
      { label: 'Contacts',  key: 'users',  href: '/contacts' }, 
      { label: 'Livrables',  key: 'deliverables',href: '/deliverables' }, 
      { label: 'Fichier sources', key: 'sources',  href: '/sources' } 
     ]; 

     //Get available companies for the user 
     var view = new keystone.View(req,res); 
     view.query('companies', keystone.list('Company').model.find().populate('project').sort('title')).then(function (err, results, next) { 
      if (err) return next(err); 
      next(); 
     }); 
     view.render(function(){ 
      next(); 
     }); 
    }; 
Verwandte Themen