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 ...
随机推荐
- 自定义清除重复uses-permission申明的AS插件
分享一个我刚到天下布医工作时,写的一个android studio插件. 做安卓项目时,经常继承一些第三方sdk,这些sdk都会申请权限,导致AndroidManifest.xml中的uses-per ...
- linux----suid\sgid
1.suid和sgid 都是针对二进制程序来说了,bash脚本不在它的作用范围. 2.如果一个二进制文件设置有suid,那么在userA用户执行它时,会以文件所属用户的身份来执行.sgid同理: 3. ...
- SQL Server IO系统问题解决
方法 1. 查询是不是真的要返回这么多的数据. 方法 2. 查询是不是系统的内存不足. 方法 3. 检查查询要访问的数据是不是不常用.如果这个数据不常用,它没有在内存中也就不奇怪了. 方法 4. 是不 ...
- 正则表达式之match与exec【转的 楼兰之风】
彻底领悟javascript中的exec与match方法 阅读本文之前,请先看下面一道题: 题目17:Read the following javascript code: var someText= ...
- CentOS DNS resolv重启无效的解决方法
分类: LINUX 直接修改/etc/resolv.conf不行.必须要在/etc/sysconfig/network-scripts/ifcfg-eth0里面最后 加上dns的设置.要不然,重启后, ...
- java应用程序远程登录linux并执行其命令(ssh jar包)
http://www.ganymed.ethz.ch/ssh2/在这个网址下载一个调用ssh和scp命令的jar包. 然后,就可以写程序了.将上面的jar包导入MyEclipse,下面是一个类的实例代 ...
- overfitting
当模型复杂度上升时,可控制参数变多,VC dimension变大, 当VC dimension过大时,虽然Ein很小,但是Eout很大,产生overfitting 比喻:开车 开太快 ...
- XCode工程中ARC模式与非ARC模式共用(转)
Xcode 项目中经常会融合一些老的代码,它们可能采用非ARC的模式.混合编译时,就会碰到编译出错的情况. 如何共用ARC模式和非ARC模式呢? XCode除了提供整个项目是否使用ARC模式的选择外, ...
- Math.round(11.5)等于()Math.round(-11.5)等于()
几天前去面试,这道简单的题目居然做错了,看来基础就是慢慢积累的.并不断使用和复习才会成为高手,假设基础不是那么熟练.恐怕在成为高手的路上会困难重重.所以在做项目的间歇时间.偶尔回顾一下最基础的知识.是 ...
- oracle11g+ef+vs2013做的项目在部署的时候碰到的问题
最近公司做一个项目,用到了ef和oracle11g,开发工具用的是vs2013,开发完成后,在本机上完美运行,但是,当到了要到服务器上部署的时候,就出了问题,服务器环境是server08R2,开发环境 ...