express中路由设置的坑-----1
 router.get('/commodities/sortable', utils.logged, function (req, res) {
     Commodity.find({force_top:true}).sort("-force_top position -at").exec(function(err, items) {
       res.render('commodities/sortable', {items:items, current: req.user});
     });
     //Commodity.find({force_top:true},function(error,docs){
     //  if(error){
     //    console.log(error)
     //  }else{
     //    res.render('commodities/sortable', {items:docs, current: req.user});
     //  }
     //});
   // res.render('commodities/sortable');
   });
   //商品排序2
   router.post('/commodities/sortable', utils.logged, function (req, res) {
     var list = req.body.list;
     var bulk = Commodity.collection.initializeUnorderedBulkOp({useLegacyOps: true});
     _.each(list, function(item, i) {
       bulk.find({_id: new ObjectID(item.id)}).update({$set: {position: parseInt(item.position)}});
     });
     bulk.execute(function (err, result) {
       if(err) console.error(err);
       res.json(result);
     });
   });
   router.get('/commodities/:id', utils.logged, function (req, res) {
     thenjs.parallel([
       function(cb) {
         Commodity.findById(req.params.id).populate("tags").deepPopulate(commodity_deep_items).exec(function (err, item) {
           if (item) item.photos = _.sortBy(item.photos, 'position');
           cb(err, item);
         });
       },
       function(cb) {
         Zan.find({commodity:req.params.id}).populate('user').exec(function(err, zans) { cb(err, zans); });
       },
       function(cb) {
         Category.find({ancestry:null}).exec(function(err, items) { cb(err, items); });
       },
       function(cb) {
         Comment.find({commodity:req.params.id}).populate('user').exec(function(err, comments) { cb(err, comments); });
       }
     ]).then(function(cb, results) {
       var taglist = {};
       _.each(TagList, function(t) {
         _.set(taglist, t.v, t.d);
       });
       res.render('commodities/edit', {item:results[0], zans:results[1], current: req.user, categories: results[2], comments:results[3], taglist: taglist, moment:utils.moment});
     });
   });
主要是第一行与第三十一的路由设置,此两处路由设置若是颠倒位置,就会报错,原因就是,第二处路由,
/commodities/:id 此处路由 :id 可以是任意字符串,包括第一行路由设置的 sortable 若是第三十一行的路由排在前面 当请求/commodities/sortable 时,会进入/commodities/:id 路由,进入后找不到就会产生错误; 此处不知道能不能加一个next()处理,若是错误 next()继续执行,因为回调函数中省掉了next参数
express中路由设置的坑-----1的更多相关文章
- nodejs+express中设置登录拦截器
		在nodejs+express中,采用nodejs后端路由控制用户登录后,为了加强前端的安全性控制,阻止用户通过在浏览器地址栏中输入地址访问后台接口,在app.js中需要加入拦截器进行拦截: /*** ... 
- Express ( MiddleWare/中间件  路由  在 Express 中使用模板引擎  常用API
		A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ... 
- MVC3.0,路由设置实现伪静态IIS中404错误
		C# code? 1 2 3 4 5 routes.MapRoute("NewQueryTest.asp", "NewQueryTest ... 
- CI中的url相关函数以及路由设置和伪静态技术
		当使用CI框架进行开发时,我们的一些数据传递的URL不应该写死,可以使用如下方法:比如说我们需要表单提交一个数据: 1.在controller控制器中我们需要先创建一个加载helper和视图的方法: ... 
- MVC中如何设置路由指定默认页
		MVC中怎么设置默认页,在webform中 只要右键设置起始页就可以,但MVC中却没有这个功能,其实MVC更简单 如下: Login是控制器,Index 是动作 在全局Global.asax中改动下即 ... 
- ICBC中的路由设置
		才去的中国工商银行,用身份证叫了A0076的号,前边还有26个人,闲来无聊果断拿出手机收取wifi.有两个ssid为ICBC的路由,信道分别是1号和6号,还好不需要密码,不过一会就连接上了. 那我先上 ... 
- node.js零基础详细教程(5):express 、 路由
		第五章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ... 
- 记一次SpringBoot 开发中所遇到的坑和解决方法
		记一次SpringBoot 开发中所遇到的坑和解决方法 mybatis返回Integer为0,自动转型出现空指针异常 当我们使用Integer去接受数据库中表的数据,如果返回的数据中为0,那么Inte ... 
- Angular4中路由Router类的跳转navigate
		最近一直在学习angular4,它确实比以前有了很大的变化和改进,好多地方也不是那么容易就能理解,好在官方的文档和例子是中文,对英文不太好的还是有很大帮助去学习. 官方地址:https://angul ... 
随机推荐
- 新浪SAE搭建项目
			1.新浪云平台SAE(http://sae.sina.com.cn/).注册账号 2.创建应用 3.填写应用信息 4.应用创建完成,管理应用 5.上传代码(.zip)格式 
- 关于Nexus 7的Usb host开发问题
			按照API Guides和搜索到的各种方法,都没办法把Nexus 7上面的USB 设备列举出来.使用市场上的软件依然不行. 在找demo的时候找到一位大神chainfire,他似乎有所解释 看来得换一 ... 
- Linux05--Shell程序设计01
			1.Shell脚本介绍 基本介绍: shell脚本是一个可执行的纯文本文件,由多个shell命令组成. 命令的执行是从上而下,从左而右的分析和执行 命令,参数间的多个空白也会被忽略 #是注释 #!用于 ... 
- perl 一个简单的面向对象的例子
			<pre name="code" class="python">[root@wx03 wx]# cat x1.pm package x1; use ... 
- 借助bootstrap框架模仿airbnb写的网页
			View HTML .nav a { color: #5a5a5a; font-size: 11px; font-weight: bold; padding: 14px 10px; text-tran ... 
- poj2864
			#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main ... 
- 普林斯顿大学算法课 Algorithm Part I Week 3 重复元素排序 - 三路快排 Duplicate Keys
			很多时候排序是为了对数据进行归类,这种排序重复值特别多 通过年龄统计人口 删除邮件列表里的重复邮件 通过大学对求职者进行排序 若使用普通的快排对重复数据进行排序,会造成N^2复杂度,但是归并排序和三路 ... 
- windows开机启动nginx
			1 .http://www.cuplayer.com/player/PlayerCode/Nginx/2014/0919/1577.html 2. http://www.cnblogs.com/xus ... 
- mysql insert和前台显示乱码
			近期在搞服务端.遇到问题例如以下, 在mysql中插入中文乱码.或mysql中中文正常显示,但jsp在前台显示mysql中的中文时乱码. 解决方法,进入mysql控制台,运行 SET characte ... 
- JSEL 表达式
			JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ... 
