2017-04-20 12 views
1

MongoDBからExpressにデータをロードしようとしていますが、最終的にhtmlで角度を使用して表示しています。今私はデータを取得するために働いているが、これはデータベース内の1つのレコードでのみ動作します。私は複数のレコードを作成する場合は、コンソールに次のエラーを与える:MongoDBからデータを取得

「それらが送られた後、ヘッダを送信することはできません」

これは急行の​​私の「取得」要求:

router.get('/getdata', function(req, res, next){ 
var findDocuments = function(db, callback) { 
var cursor = db.collection('userdata').find({}); 
cursor.each(function(err, doc) { 
    assert.equal(err, null); 
    if (doc != null) { 
    res.status(200).json(doc); 
    } else { 
    callback(); 
    } 
}); 
}; 
    mongo.connect(url, function(err, db) { 
    assert.equal(null, err); 
    findDocuments(db, function() { 
    db.close(); 
    }); 
}); 
    console.log('Items have been returned'); 
}); 
+0

まず、私はMondoDBで作業するための非常に素晴らしい機能を提供するMongooseを使用することをお勧めします。スキーマを作成したら、既存のオブジェクトをすべて1つのmongooseメソッドmySchema.find(err、response)で取得できます。そして、マングースを使用すると、手動で接続を開いたり閉じたりする必要はありません – JavaEvgen

+0

ループを使用してヌルドックを調べたり、条件を入れたりしないでください({{key:{$ exists:true}}) –

答えて

0
router.get('/getdata', function(req, res, next){ 

    var findDocuments = function(db, callback) { 

    //use such codtion that filter null/empty doc 
    //replace key with field of your doc 
    var cursor = db.collection('userdata').find({'key' : {$exists : true}}); 

    //return all docs 
    if(cursor){ 
    return callback(cursor); 
    }else{ 
    return callback([]); 
     } 

    }; 

    mongo.connect(url, function(err, db) { 
    assert.equal(null, err); 
    findDocuments(db, function(docs) { 
    db.close(); 

    //send finaly doc here 
    console.log(docs); 
    res.status(200).send(docs); 

    }); 
}); 

    console.log('Items have been returned'); 
}); 
+0

これは動作しません私のために。 TypeError:循環構造をJSONに変換する – Larsmanson

+0

文書スキーマまたはmongoドライバに従って条件を送信または変更する前にconsole.logを使用してドキュメントをチェックする –

関連する問題