2017-04-20 2 views
1

MongoDB에서 내 익스프레스로 데이터를로드하여 각도의 사용으로 내 html에 표시하려고합니다. 이제 데이터를 가져 오려고 노력했지만 데이터베이스의 레코드 하나에서만 작동합니다. 내가 여러 레코드를 만들 경우, 콘솔에 다음과 같은 오류를 제공합니다 :MongoDB에서 데이터 가져 오기

"그들이 보낸 후 헤더를 보낼 수 없습니다"

이것은 명시 내 "GET"요청 :

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를 사용하는 것이 좋습니다. 스키마를 만든 후에는 기존의 모든 객체를 mongoose 메소드 mySchema.find (err, response)로 가져올 수 있습니다. 몽구스를 사용하면 "수동으로"연결을 열고 닫을 필요가 없습니다 – JavaEvgen

+0

루프를 사용하여 null 문서를 확인하거나 조건을 넣어 찾기와 같이 찾을 필요가 없습니다 ({{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를 사용하여 문서를 확인하십시오. –

관련 문제