NodeJS async.parallel成功被调用两次?

时间:2015-09-07 14:23:50

标签: javascript node.js asynchronous

查看我的代码

router.get('/:productSlug', function(req, res, next) {
    async.parallel({
        product: function(callback) {
            products.single(callback, req,res,next)
        }
    },
    function(err, results){
        console.log('HERE');
        console.log(results.product.rows[0]);
        res.render('product', {product : results.product.rows[0]});
    });
});

我的控制台输出如下

HERE
{ name: 'Test Product',
  price: '19.99' }
GET /img/logo.png 304 9.127 ms - -
GET /img/social/share.png 304 2.051 ms - -
GET /img/social/tweet.png 304 2.190 ms - -
HERE
undefined

所以它有效,但似乎再次调用它,第二个调用意味着未定义的部分使整个事情破裂。

任何想法 - 我完全迷失了!

编辑:添加了名为...的功能

single: function (callback, req, res, next){
    var client = new req.app.locals.pg.Client(req.app.locals.pgCon);
    client.connect(function(err) {
        if(err) {
            return callback(['could not connect to postgres', err], null);
        }
        client.query('SELECT * FROM products WHERE slug=$1', [req.params.productSlug], function(err, result) {
            if(err) {
                return callback(['error running query', err], null);
            }
            return callback(null, result)
            client.end();
        });
    });
}, //End function : single

1 个答案:

答案 0 :(得分:1)

当您在浏览器中打开页面时,它会向/favacon.ico发送其他请求 - 请务必处理。