2016-11-14 86 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

有沒有其他的想法? –