標籤:
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 //商品排序216 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參數
express中路由設定的坑-----1