zoukankan      html  css  js  c++  java
  • express中路由设置的坑-----1

     1 router.get('/commodities/sortable', utils.logged, function (req, res) {
     2     Commodity.find({force_top:true}).sort("-force_top position -at").exec(function(err, items) {
     3       res.render('commodities/sortable', {items:items, current: req.user});
     4     });
     5     //Commodity.find({force_top:true},function(error,docs){
     6     //  if(error){
     7     //    console.log(error)
     8     //  }else{
     9     //    res.render('commodities/sortable', {items:docs, current: req.user});
    10     //  }
    11     //});
    12   // res.render('commodities/sortable');
    13 
    14   });
    15   //商品排序2
    16   router.post('/commodities/sortable', utils.logged, function (req, res) {
    17     var list = req.body.list;
    18     var bulk = Commodity.collection.initializeUnorderedBulkOp({useLegacyOps: true});
    19     _.each(list, function(item, i) {
    20       bulk.find({_id: new ObjectID(item.id)}).update({$set: {position: parseInt(item.position)}});
    21     });
    22 
    23     bulk.execute(function (err, result) {
    24       if(err) console.error(err);
    25       res.json(result);
    26     });
    27   });
    28 
    29 
    30 
    31   router.get('/commodities/:id', utils.logged, function (req, res) {
    32     thenjs.parallel([
    33       function(cb) {
    34         Commodity.findById(req.params.id).populate("tags").deepPopulate(commodity_deep_items).exec(function (err, item) {
    35           if (item) item.photos = _.sortBy(item.photos, 'position');
    36           cb(err, item);
    37         });
    38       },
    39       function(cb) {
    40         Zan.find({commodity:req.params.id}).populate('user').exec(function(err, zans) { cb(err, zans); });
    41       },
    42       function(cb) {
    43         Category.find({ancestry:null}).exec(function(err, items) { cb(err, items); });
    44       },
    45       function(cb) {
    46         Comment.find({commodity:req.params.id}).populate('user').exec(function(err, comments) { cb(err, comments); });
    47       }
    48     ]).then(function(cb, results) {
    49       var taglist = {};
    50 
    51       _.each(TagList, function(t) {
    52         _.set(taglist, t.v, t.d);
    53       });
    54 
    55       res.render('commodities/edit', {item:results[0], zans:results[1], current: req.user, categories: results[2], comments:results[3], taglist: taglist, moment:utils.moment});
    56     });
    57   });

    主要是第一行与第三十一的路由设置,此两处路由设置若是颠倒位置,就会报错,原因就是,第二处路由,

    /commodities/:id

    此处路由 :id 可以是任意字符串,包括第一行路由设置的 sortable 若是第三十一行的路由排在前面 当请求/commodities/sortable 时,会进入/commodities/:id 路由,进入后找不到就会产生错误;

    此处不知道能不能加一个next()处理,若是错误 next()继续执行,因为回调函数中省掉了next参数
    坚持下去就能成功
  • 相关阅读:
    udp tcp
    easy_install jinja2 mac linux
    linux 常用命令;
    Mac android 开发 sdk配置和手机连接
    ubuntu server 分区
    常见操作
    环境搭建相关
    ssh登录虚拟机上的linux
    算法学习
    转载一个 测试java类的玩意
  • 原文地址:https://www.cnblogs.com/suoking/p/4868712.html
Copyright © 2011-2022 走看看