2017-02-28 2 views
0

우선, 작은 데이터 세트입니다. API를 통해 전체 프로덕션 DB를 단일 화면에 덤프하는 것이 현명하지 않을 것입니다. node.js 애플리케이션에서 API 엔드 포인트를 통해 리턴하기 위해 전체 (작은) DB의 JSON 덤프를 얻는 것만으로도 충분하다.Node.js API에 전체 MongoDB 내용 표시

성공적으로이 코드를 하나의 레코드를 반환 않습니다 내 응용 프로그램

: 당신이 실행할 때

MongoClient.connect("mongodb://localhost:27017/search", function (err, db) { 

    if(err) throw err; 

    db.collection('results', function(err, collection) { 
     // search for match that "begins with" searchterm 
     collection.findOne({'string':new RegExp('^' + searchterm, 'i')}, function(err, items){ 
      // get result 
      var result; 
      if (items == null || items.result == null){ 
       result = ""; 
      } 
      else { 
       result = items.result; 
      } 
      // return result 
      res.send(result); 
     }); 
    }); 
}); 

그래서 내가 노드가 성공적으로 몽고에 얘기를 알고,하지만 난이 쿼리를 조정할 수있는 방법/코드가 기본적으로 반환은 당신은 무엇을 얻을 MongoDB 커맨드 라인에서 다음을 참조하십시오 :

$ db.results.find() 

답변

0

답장을 보내 주셔서 감사합니다. {}을 (를) 쿼리로 사용하는 측면에서 올바른 방향으로 안내해 주셔서 감사합니다. 여기에 결국 나를 위해 일한 코드는 다음과 같습니다

db.collection('results', function(err, collection) { 
    collection.find({}).toArray(function(err, docs) { 
     res.send(docs); 
    }); 
}); 

toArray (...) 부분이되는 중요한 요소입니다.

+0

왜 toArray를 붙일 필요가 있었는지 궁금합니다. 사용중인 MongoDB/Mongoose 버전을 공유하는 마음? –

+0

나는 정직하게 말할 것이다, 나는 몽구스가 무엇인지 전혀 모른다. Mac OS X Sierra에서 MongoDB의 v3.2.0을 실행 중입니다. 나는 무작위로 많은 시행 착오를 거친 후에 이것이 가장 먼저 작동했기 때문에 toArray (...)를 사용했다. 당신이 올바른 대안을 제안하면 나는 그것을 줄 것이다. – HomerPlata

+0

Mongoose는 JavaScript/Node.js 용 MongoDB를 감싸는 래퍼 (wrapper)로, 약간 더 관리하기 쉽고 읽을 수있는 코드로 추상화합니다. 나는 이것이 내 제안 된 해결책이 효과가없는 이유라고 생각한다. 몽구스는 아마도 당신이 한 일을'toArray()'라고 할 것입니다. –

2

이것은 발췌입니다.

model.find({}).exec(function (err, result) { 
     if (err) {console.error(err); return;} 
     else return result; 
    }); 

미리 정의 된 모델을 사용하고 찾기를 호출하십시오. 논리는 빈 객체 {}을 기본적으로 렌더링하는 것입니다. 이 모델에서 모두 선택하십시오.

의미가 있습니까?

+0

mongodb와 함께 약속을 사용하는 것이 좋습니다. 바람직하게는 블루 버드. – Remario

1

정확하게 설명했듯이.

collection.find({}).exec((err, result) => { 
    if (err) { 
    console.log(err); 
    return; 
    } 
    if (result.length > 0) { 
    // We check that the length is > 0 because using .find() will always 
    // return an array, even an empty one. So just checking if it exists 
    // will yield a false positive 
    res.send(result); 
    // Could also just use `return result;` 
});