2016-11-14 87 views
0

我想从db运行选择查询并打印结果。但即使我看到在控制台中的结果,我没有看到索引页。 (Hovewer我看到控制台的结果,但它也显示不正确。我有2行db,但我看到每行3行,所以导致控制台是:2X3 = 6行。)我把关于控制台结果问题的结尾。Node.js - 从sql打印结果

守则app.js

app.use('/', routes, function(req, res){ 
    pg.connect(connect, function(err, client, done){ 
    if(err){ 
     return console.error('errrr', err) 
    } 
    client.query('select * from recipes', function(err, result){ 
    if(err){ 
     return console.error('error running query', err); 
    } 
    console.log(result.rows); 
    res.render('index.njk', { recipes: result.rows}); 
    done(); 
    }); 
    }); 
    }); 

守则index.njk

<ul> 
    {% for name, item in recipes %} 
    <li>{{ name }}: {{ item.name }}</li> 
    {% endfor %} 
</ul> 

this is result of the console 能否请你帮我解决这个问题?

回答

0

我已经通过在index.js中使用下面的代码块来解决我的问题,而不是使用app.js.我不知道这是正确的方式,但它现在工作正常。如果方法不正确,请让我纠正它。

router.get('/', function(req, res){ 
    pg.connect(connect, function(err, client, done){ 
    if(err){ 
    return console.error('errrr', err) 
    } 
    client.query('select * from recipes', function(err, result){ 

    if(err){ 
     return console.error('error running query', err); 
    } 
    if(result.rows.length > 0) { 
     res.render('index.njk', { recordResult: result.rows}); 
     console.log(result.rows); 
    }else { 
     console.log('No rows found in DB'); 
     } 
    done() 
    }); 
    }); 
}); 
0

看起来像(通过你的控制台的图片)result.rows是一个数组,其中有2个值的数组。因此,在遍历index.njk中的值时,recipes是一个数组数组,并且不包含具有name属性的项。

如果设置食谱:result.rows [0]应该提供快速修复:

res.render('index.njk', { recipes: result.rows[0]});

这可以让你得到你的数组的数组,这是正常的第一要素,因为阵列中只有1个元素(你实际需要的2个元素!)。您应该在执行此操作前检查result.rows.length> 0,以便您不会超出范围并获得错误。

if(result.rows.length > 0) { 
    res.render('index.njk', { recipes: result.rows[0]}); 
}else { 
    console.log('No rows found in DB'); 
} 
+0

不幸的是它没有工作 –

+0

有没有其他的想法? –