Tag: 中间件

如何在另一个文件中正确应用路由

我是相当新的expressionjs,我想知道如何使用路由器。 我用这段代码在routes目录下创build了一个名为categories.js的文件。 类别.js代码: var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/categories', function(req, res) { res.send('this is the category'); }); module.exports = router; 里面的app.js我有这样的代码: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes […]

为什么我的连接中间件没有通过?

我正在使用"connect": "^3.3.5" ,我有app.use '/', messageMiddleware.incoming, userMiddleware.process 我的messageMiddleware有: exports.incoming = (req, res, next) -> fromNumber = req.body.From toNumber = req.body.To global.db.Message.create message: req.body.Body.trim() from: fromNumber to: toNumber .then (dbMessage) -> req.MessageId = dbMessage.id next() .catch (err) -> next err 我的userMiddleware有 'use strict' exports.process = (req, res, next) -> console.log 'processing' res.end() 但是,它不loggingprocessing或end 。 我做错了什么?

Nodejs有什么问题?

我正在使用Muller来处理上传图片。 app.use(multer({ dest: './public/photos', rename: function (fieldname, filename) { return filename+Date.now(); }, onFileUploadStart: function (file) { console.log(file.originalname + ' is starting …') }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path) //a='asass'; done=true; } })); app.post('/api/photo',function(req,res){ if(done==true){ //ERROR here if I remove comment on 'a=asass' >> 'done' is not defined console.log(req.files); […]

在post hook中间填充mongoose中的'find'

我有用户发布在我的网站上的文章的文章架构。 它引用了用户集合: var ArticleSchema = new Schema({ title: { // NO MARKDOWN FOR THIS, just straight up text for separating from content type: String, required: true }, author: { type: Schema.Types.ObjectId, ref: 'User' } }); 我想在所有find / findOne调用上有一个post钩子来填充引用: ArticleSchema.post('find', function (doc) { doc.populate('author'); }); 出于某种原因,在钩子中返回的文档没有填充方法。 我是否必须使用ArticleSchema对象而不是文档级别填充?

用户是否可以添加/更改“请求”对象的属性(并导致安全漏洞)?

我对Node.js很陌生,写了一些类似的代码 request.validToken = true; 一旦我确认请求中的令牌有效。 如果validToken已经是真的,那么我会缩短检查时间。 但是我想知道的是,请求是否可以被攻击者编辑,使这个字段在原始请求中存在,因此允许他们绕过安全检查? 如果是的话,最好的做法是什么?

在使用Passport-local作为validation策略的快速应用程序中,不受保护的端点

我想知道如何创build一个端点(GET,POST等),可以访问没有任何身份validation。 这是我的代码: router.use(AuthenticationManager.ensureAuthenticated()); router.use('/', require('./index')); router.use('/path-1', require('./path1')); router.use('/path-2', require('./path2')); 所有的端点将享受Authentication Manager 。 如何仅禁用./path1或./path2中的某些端点validationpipe理器?

为什么我的中间件执行两次?

我在express.js / node.js中编写了一个中间件,用于检查会话,以及是否find用户ID,显示用户的菜单,或者显示默认菜单。 每个页面请求检查一个id并从数据库中提取用户数据(id,name,category等) 这里是中间件: module.exports = function(req,res,next){ console.log("INSIDE SESSION HANDLER"); if(!req.session.uid) return next(); else{ User.get(uid, function(user){ if (!user) {return next(err);} else{ req.user = res.locals.user = user; next(); } }) } } 然后,ejs检查当地人,如果有一个ID,显示用户的菜单。 我正在加载一个testing页面,我没有使用socket.io库,但忘记删除<script src="/socket.io/socket.io.js"></script>行。 <!DOCTYPE html> <html> <head> <title><%= title %> , <%= settings.title %></title> <link rel='stylesheet' href='/stylesheets/style.css' /> <script src="/socket.io/socket.io.js"></script>//<== SHOULD DELETE THIS […]

停止函数被多次调用

我正在build立一个file upload组件,允许你暂停/恢复file upload。 实现这一目标的标准方法似乎是将文件分解成客户端计算机上的块,然后将块和书籍信息一起发送到服务器,服务器可以将块存储到暂存目录中,然后将它们合并在一起已经收到了所有的块。 所以,这就是我正在做的。 我正在使用节点/快递,我能够得到的文件很好,但我遇到了一个问题,因为我的merge_chunks函数被调用多次。 这是我的调用堆栈: router.post('/api/videos', upload.single('file'), validate_params, rename_uploaded_chunk, check_completion_status, merge_chunks, record_upload_date, videos.update, send_completion_notice ); check_completion_status函数实现如下: /* Recursively check to see if we have every chunk of a file */ var check_completion_status = function (req, res, next) { var current_chunk = 1; var see_if_chunks_exist = function () { fs.exists(get_chunk_file_name(current_chunk, req.file_id), function (exists) { […]

Express js – 中间件中的error handling

我有一个路线 app.get("/some/url/", function(req, res){ res.sendStatus(404) }) 我正在尝试处理或捕获这个404expressionerror handling中间件,它不工作 app.use(function(err, req, res, next){do something here}) 任何帮助我如何捕获中间件路由引发的错误。

在“mongoose”(prevalidate)中间件中更改字段是否正确?

每次将post保存到数据库时,我都需要生成slu g。 特别是Post.create和post.save 。 在PostShema.pre('validate')中间件中,我可能需要这个地方,如下所示: PostSchema.pre('validate', function (next) { this.slug = sluglify(this.title); return next(); }); 所有的工作正常,除了它发生在validate middlweare应该只检查,但没有设置的事实。 所以我questuin是我应该居住在我的代码sluglify我的标题创build或更新后?