随笔分类 -  nodejs

摘要:在使用mongoose的聚合时一定要注意,在id列上使用$match会有个小问题,参考上面的代码,`{$match:{_id:"5576b59e192868d01f75486c"}}`这句话不起作用,但数据库中明明有对应的文档,改为其他列(比如:title)就没问题,但有时就需要使用id列,这时需要这样写`{$match:{_id:new mongoose.Types.ObjectId(id)}}`,经查阅,mongoose中有两个地方定义了ObjectId,`mongoose.schema.Types.ObjectId`和`mongoose.Types.ObjectId`,在这里只有后面那种才起作用。 阅读全文
posted @ 2015-06-16 17:38 眼神与背影 阅读(704) 评论(0) 推荐(0)
摘要:passport的验证过程主要依赖具体的验证策略来实现的,比较常用的有session策略、local策略和github策略等,验证逻辑都是在这些策略类中定义的。passport模块的定义主要包括三个部分:passport类、相关中间件和验证策略,passport自带了session验证策略,如果要使用其他验证策略,需要自行添加。 阅读全文
posted @ 2015-04-02 00:19 眼神与背影 阅读(1381) 评论(0) 推荐(0)
摘要:Router中不仅能存放一般的中间件,还能存放Router,这一点在源码中能看的出来,因为Router的构造函数中返回的是一个router函数,而中间件的生成也需要一个处理程序(函数),那么如果把Router()返回的处理程序作为参数传入中间件的生成方法中,就相当于Router中存放了一个Router中间件,只不过这两个Router是两个不同的实例。 阅读全文
posted @ 2014-11-05 00:28 眼神与背影 阅读(641) 评论(0) 推荐(0)
摘要:在web开发中,一个简化的处理流程就是:客户端发起请求,然后服务端进行处理,最后返回相关数据。不管对于哪种语言哪种框架,除去细节的处理,简化后的模型都是一样的。客户端要发起请求,首先需要一个标识,通常情况下是URL,通过这个标识将请求发送给服务端的某个具体处理程序,在这个过程中,请求可能会经历一系列全局处理,比如验证、授权、URL解析等,然后定位到某个处理程序进行业务处理,最后将生成的数据返回客户端,客户端将数据结合视图模版呈现出合适的样式。本文从express框架的源码着手,分析了其路由机制。 阅读全文
posted @ 2014-11-03 11:33 眼神与背影 阅读(2208) 评论(2) 推荐(2)