请求对象中的 MEANJS 猫鼬模型
MEANJS mongoose model in request object
我刚开始 meanjs。当我查看它的服务器端模块用户配置文件控制器时,我发现猫鼬模型用户在 req 对象中可用。
它是从哪里添加到请求对象中的?
参考下面的代码,我想了解var user = req.user;
,user
是如何添加到req
对象中的?
'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
的身份验证中间件在成功登录后设置 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
我刚开始 meanjs。当我查看它的服务器端模块用户配置文件控制器时,我发现猫鼬模型用户在 req 对象中可用。
它是从哪里添加到请求对象中的?
参考下面的代码,我想了解var user = req.user;
,user
是如何添加到req
对象中的?
'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
的身份验证中间件在成功登录后设置 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