2017-07-26 65 views
0

我是新的節點js。我試圖從mongodb數據中獲取數據,數據完美存儲。但是當我想回到它不工作我使用一個數組然後我把它傳遞給HTML頁面,該數組的元素更改只在循環中,之後,我總是得到array.lengh等於1.節點js mongodb獲取數據

var express = require('express'); 
var async = require('express-async'); 
var MongoClient = require('mongodb'); 
var assert = require('assert'); 

var router = express.Router(); 


var url = "mongodb://localhost:27017/mydb"; 



router.get('/',function (req,res,next) { 
aray = [{ 
    FirstName: "da", 
    LastName: "m", 
    contry: "l" 
}] 
MongoClient.connect(url, function (err, db) { 

    if (err) throw err; 
    var cursor = db.collection('usercollection').find(); 

    console.log("funBD") 

    cursor.each(function (err, doc) { 
     assert.equal(null, err); 
     console.log(doc); 
     if (doc != null) 
      aray.push(doc); 
    },function() { 
     db.close(); 
     res.render('Profil',{items:aray}); 

    }); 
    }); 

    }); 

module.exports = router; 

的html頁面:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/html"> 
<head> 
<meta charset="utf-8" /> 
    <style> 
    h1{ 
     tab-size: 20; 
     text-align: center; 
    } 
    </style> 

    </head> 
<body> 
<% for(var i=0; i<items.length; i++) { %> 
    <li> 
    <%= items[i].FirstName %> 
    </li> 
    <% } %> 

</body> 
</html>  

謝謝!

+0

你使用哪種版本的MongoDB?我檢查了[docs](https://docs.mongodb.com/manual/tutorial/iterate-a-cursor),我發現不是cursor.each(),你必須使用cursor.forEach()。它是否與這個改變一起工作? –

+0

我嘗試過,但當我使用cursor.forEach我得到這個錯誤 TypeError:cursor.Foreach不是一個函數 – dal

+0

MongoDb的版本是3.4 – dal

回答

0

試試這個代碼:

db.collection('usercollection').find().toArray(function (err, docs) { 
    assert.equal(null, err); 
    console.log(docs); 
    aray = aray.concat(docs); 

    db.close(); 
    res.render('Profil',{items:aray}); 
}); 
+0

它完美的作品謝謝你! – dal