MEANJS请求对象中的mongoose模型
我刚刚开始与meanjs 。 当我看了一下服务器端模块用户configuration文件控制器,我发现mongoose模型用户在req对象中可用。
从哪里得到req对象?
参考下面的代码,我想了解var user = req.user;
,如何在req
对象中添加user
?
'use strict'; /** * Module dependencies. */ var _ = require('lodash'), errorHandler = require('../errors.server.controller.js'), mongoose = require('mongoose'), passport = require('passport'), User = mongoose.model('User'); /** * Update user details */ exports.update = function(req, res) { // Init Variables var user = req.user; var message = null; // For security measurement we remove the roles from the req.body object delete req.body.roles; if (user) { // Merge existing user user = _.extend(user, req.body); user.updated = Date.now(); user.displayName = user.firstName + ' ' + user.lastName; user.save(function(err) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); } else { req.login(user, function(err) { if (err) { res.status(400).send(err); } else { res.json(user); } }); } }); } else { res.status(400).send({ message: 'User is not signed in' }); } }; /** * Send User */ exports.me = function(req, res) { res.json(req.user || null); };
Passport
的身份validation中间件在成功login时设置req.user
。
在meanjs app.param([name], callback)
中,每当有一个像参数articeId
这样的id的路由被访问时, app.param([name], callback)
中间件被触发。 在meanjs它设置req.article
像这样。
app.param('articleId', articles.articleByID);
并在articleByID
exports.articleByID = function(req, res, next, id) { if (!mongoose.Types.ObjectId.isValid(id)) { return res.status(400).send({ message: 'Article is invalid' }); } Article.findById(id).populate('user', 'displayName').exec(function(err, article) { if (err) return next(err); if (!article) { return res.status(404).send({ message: errorHandler.getErrorMessage(err) }); } req.article = article; next(); }); };
更多关于app.param
请参阅http://expressjs.com/api.html#app.param