2012-05-21 3 views
5

내 mongoDB를 쿼리하고 노드로 만든 웹 페이지에서이 결과를 표시하고 싶습니다 ... 지금 mongojs 드라이버를 사용하고 있습니다 - DB에 데이터를 넣는 데 아주 좋은 드라이버를 찾았습니다 - 문법은 Mongo 쉘과 동일하며 노드 애플리케이션에 바로 코드를 넣을 수 있습니다. 이 작업은 단순히 웹 페이지 또는 콘솔의 쿼리 결과를 보여주는 것만으로는 매우 어려운 것으로 입증되었습니다. 다음은 내 코드의 관련 부분과 내가 시도한 부분입니다.MongoDB 쿼리를 문자열로 캡쳐하고 노드 JS 페이지 (mongojs 드라이버 사용)에 표시하는 방법은 무엇입니까?

var databaseUrl = "test"; // "username:[email protected]/mydb" 
var collections = ["graph1"] 
var db = require("mongojs").connect(databaseUrl, collections); 

console.log(db.graph1.find()); 

graph1이라는 콜렉션을 만들었으며 mongo 프롬프트에서 결과가 나타납니다. 참고 사항 ... HTML로 표시하고 싶습니다 ... 콘솔로 인쇄 할 수 있다면 spose하여 HTML로 가져올 수 있습니다.

그것은 현재이 출력 :

{_oncursor: { get: [Function], put: [Function] } } 

이있다 내가 실제로 원하는에 대한 프로토 타입의 어떤 종류 :

{ "x" : "0", "y" : "1343725568", "_id" : ObjectId("4fba6....") } 

답변

2

이 시도 :

db.graph1.find({}, function(err, result){ 
    if (err || !result) console.log(" an error has occurred"); 
    else { 
    console.log(result); 
    } 
    }); 

콘솔 로그를 그 함수 프로토 타입 인 db.graph1.find() 반환 값을 인쇄했다. 그것은 비동기 함수이기 때문에 유용한 것을 반환하지 않습니다. 기존 위해서

db.graph1.find({ //what you want to search for here }, callback); 

    function callback(result_from_mongo) { 
    // do stuff here with result_from_mongo 
    } 
+0

감사합니다! 이 작품! – PinkElephantsOnParade

1

는, 모든 사람들이 더 당신이 당신의 쿼리 결과를 조작 할 수있는 유일한 시간이 있음을 알아야한다 : 그것은 검색 데이터로 가능한 일을 할 수있는 유일한 방법은 데이터를 처리하는 콜백을 전달하는 것입니다 콜백에서 ... 콜백 내에서만 나중에 바보가 되려면 var에 설정하지 마라. - =.

쿼리 결과를 문제없이 문자열로 만들려면 다음을 사용하십시오. 표준 라이브러리 물건 : 당신이 빈민가를하고 콜백 이외의 결과를 사용하려면

var results_not_ugly_or_messed_up = (JSON.stringify(result)); 

, 당신은 항상 당신의 "도 캐릭터 라인"결과와 펄/파이썬/SH/박쥐/어떤 스크립트를 호출 할 수있다 (이 예에서는 results_not_ugly_or_messed_up)를 매개 변수로 사용하여 파일에 저장하여 읽은 다음 원하는대로 사용합니다. 전체 실제 예를 들어

:

db.newguestbook.find({"Name" : /[Aa]/ },[],function(err,p) //newguestbook is a collection I have  
//you will need to change that unless you make a collection called newguestbook 
{ 
    cursor = p; 
    console.log(cursor); 
    console.log(JSON.stringify(cursor))); //We have a nice string, see? 
    var exec = require('child_process').exec; 
    exec("perl writetofile.pl " + JSON.stringify(cursor) , function(err, 
    stdout, stderr) 
    { 
     console.log("Perl run to store this result in a file"); 
    }); 

}); 
}