2017-07-26 20 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

関連する問題