mongodb 结合express 进行路由进行验证

const express = require('express')
const mongoClient = require("mongodb").MongoClient;
const app = express();
const router = express.Router();
var message = {};
function verify(ids,next){
    console.log(ids)
    mongoClient.connect("mongodb://localhost:27017",{},(err,client)=>{
            if (!err){
                const db = client.db('data');
                db.collection('pingguo',{},(err,collection)=>{
                    let  query = {id:Number(ids)};
                    collection.findOne(query,{},(err,result)=>{

                        if (result){
                            console.log(1)
                            message = result;
                            console.log(message)
                            let msg =  JSON.stringify(message);
                            next();
                        }else{
                            next('route')
                        }

                        //console.log(message)
                    })
                })
            }
        }
    );
}

router.param('id', function (req, res, next, id) {

    verify(id,next);
    console.log('CALLED ONLY ONCE')

})

router.get('/user/:id', function (req, res, next) {
    console.log('although this matches')
    next()
})
router.get('/user/:id', function (req, res) {
    console.log('and this matches too');

    res.send()
});

app.use('/',router);

app.listen(80);

要搞清楚查询的类型,在传参过程中存在类型转换的。 在express   中app.param阶段,已经将id转换成了字符串。

这里,只要需要next也传进去,将播放下一个路由的权限交给param

你可能感兴趣的:(组合开发,mongodb)