node.js - Node 关联 mongoDB之后,发现会多发一次请求,求解
黄舟
黄舟 2017-04-17 12:58:42
[Node.js讨论组]

我在路由里面这样写:

app.get('/product/:id',Product.detail);

Product.detail是这样的:

exports.detail = function (req,res,next){

    var id = new mongoose.Schema.ObjectId(req.params.id).path;
    logger.info(id);

    ProductDB.findById(id,function(err,product){
        if(err){
            logger.error(err);
            return next(err);
        }
        CommentDB
            .find({product: id})
            .populate('from','name')
            .populate('reply.from reply.to','name')
            .exec(function(err,comments){
                if(err){
                    logger.error(err);
                    return next(err);
                }
                var _product = _.extend({},product);
                var _comments = _.extend({},comments);

                return res.render('detail',{
                    title: _product.title,
                    product: _product,
                    comments: _comments
                });
        });
    });
};

之后起服务,页面正常

http://localhost:3000/product/56335734f8e5b62182dc0d35

可是发现多发了一次请求,且这次请求拿不到params.id,导致momgoose会报CastError,如下undefined:

GET /product/56335734f8e5b62182dc0d35 304
zhishifan started on port: 3000
GET /libs/jquery/dist/jquery.min.js 304
GET /libs/bootstrap/dist/css/bootstrap.min.css 304
GET /libs/bootstrap/dist/js/bootstrap.min.js 304
GET /product/undefined 304
zhishifan started on port: 3000
GET /js/comment.js 304
GET /libs/jquery/dist/jquery.min.map 304

实在没想通这次请求从哪里出来的,路由里也没有重复的定义,求指导。

另,如果只对请求做最简单的render,不会有多余的请求,所以我想应该不是路由重复的问题:

exports.detail = function (req,res,next){
    res.render('detail',{
        title: 'hi'
    });
};

GET /product/56335734f8e5b62182dc0d35 200
zhishifan started on port: 3000
GET /libs/jquery/dist/jquery.min.js 304
GET /libs/bootstrap/dist/css/bootstrap.min.css 304
GET /libs/bootstrap/dist/js/bootstrap.min.js 304
GET /js/comment.js 304
GET /libs/jquery/dist/jquery.min.map 304
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
ringa_lee

你的detail函数无返回值

迷茫

。。。找到原因了,原来不是代码问题,是前端页面资源加载失败多请求了一次,问题关闭

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号