我已经设置了一个基本的记录器Mongoose DB对象,我想通过true中间件并随着应用程序的进展或特定条件更新它/编辑它。
记录器中间件。
function Logger(req, res, next) {
Logs.findOne({ip:func.GIP(req)},function (err, log){
if (err) console.log(err);
if (!log) {
var log = new Logs({ip: func.GIP(req), user: "anonymous"});
log.attempts = 1;
log.save();
next();
}
if (log.attempts > config.attempts) {
return res.status(403).send({
success: false
});
}
if (log.attempts <= config.attempts){
log.attempts += 1;
log.save();
next();
}
});
}
我的例子Route.
app.post("/example", Logger, function(req,res) {
if(!condition){
log.attempts = 0;
log.save();
}
});
如果不再次运行Logs.findOne({ip:f...
函数,我将如何访问上面演示的log.save()
对象?
只需将log
变量添加到req
对象:
function Logger(req, res, next) {
Logs.findOne({ip:func.GIP(req)},function (err, log){
if (err) console.log(err);
if (!log) {
var log = new Logs({ip: func.GIP(req), user: "anonymous"});
log.attempts = 1;
log.save();
req.log = log;
next();
}
if (log.attempts > config.attempts) {
return res.status(403).send({
success: false
});
}
if (log.attempts <= config.attempts){
log.attempts += 1;
log.save();
req.log = log;
next();
}
});
}
你可以这样访问它:
app.post("/example", Logger, function(req,res) {
if(!condition){
req.log.attempts = 0;
req.log.save();
}
});