Zum Beispiel in dieser Abfrage:Express.js: Welche Möglichkeiten gibt es, das Mugoose-Abfragefeld global für die Vorlagen (Hanldlebars) zugänglich zu machen?
User.findById(req.user._id)
.populate({path: 'roles.account', populate: { path: 'groups', select: 'name'} })
.exec(function(err, user) {
if (err) {
return callback(err, null);
}
return callback(null, user);
});
ich den Namen einer Gruppe wie {{user.roles.account.groups.[0].name}}
in meinen Vorlagen abrufen kann, wenn ich es res.render
Funktion nur für eine bestimmte Strecke passieren.
Wie kann ich erreichen, dass dieser Wert (nicht das gesamte Dokument) global verfügbar ist? Ich habe versucht, eine Methode für das Benutzermodell festzulegen und sie in einem Rückruf an res.locals
weiterzugeben, aber es hat nicht funktioniert. Es muss dynamisch sein, abhängig von req.user._id
.
Gibt es andere Möglichkeiten, es global zu machen?
Aus dem Aussehen des Codes, nehme ich an, Sie verwenden eine Funktion und übergeben es die 'req', richtig? Wenn ja, warum schreibe ich die Abfrage nicht in den Handler und Sie können 'res.render ('viewName', {user: user})' 'im Callback anstelle von' return callback (null, user) 'verwenden –
Das ist was Sie Wenn Sie eine bestimmte Ansicht rendern möchten, und was ich möchte, ist dieser Wert in allen Ansichten in der App verfügbar, mit ähnlichen Funktionen wie zum Beispiel, wenn Sie etwas in res.locals oder app.locals setzen – ASem
Ich sehe Und Sie haben versucht, es in eine 'app.use (req, res, next) {}' Funktion zu setzen und sie auf 'res.locals' zu setzen? Ist das, was Sie damit gemeint haben, versucht, eine Methode für das Benutzermodell festzulegen? –