2014-03-25 5 views
1

커서 커서로 변환 쉽게 .toArray(foo) 방법을 사용하여 배열로 변환 할 수 있습니다배열이

var cursor = col.find({}); 
cursor.toArray(function (err, itemsArray) { 
    /* do something */ 
}); 

을하지만 내가 모든 커서 기능을해야합니다 커서에 itemsArray을 변환 할 수 있습니까?

var Iterator = function() { 
    var items = []; 
    var index = 0; 

    return { 

     "createCursor" : function (listing) { 
      items = listing; 
     }, 

     "next" : function() { 
      if (this.hasNext()) { 
       return items[index++]; 
      } else { 
       return null; 
      } 
     }, 

     "hasNext" : function() { 
      if (index < items.length) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
    } 
}(); 

그래서 다음 배열을 다음과 같이 사용 :

var newCursor = foo (itemsArray); 
typeof newCursor.toArray === "function" // true 
+0

MongoDB 커서 api를 에뮬레이트하고 싶습니다. –

+0

@LeonidBeschastny 가능한 경우 에뮬레이트하고 싶지만 배열을 커서로 변환하기 위해 기존 API를 실제로 사용하고 싶습니다. –

+1

나는 그런 API가 존재하는지 의심 스럽다. –

답변

1

글쎄 그것은 모든 단지 자바 스크립트는 왜 자신의 반복자를 생성하지 않는

var cursor = new Iterator(); 
cursor.createCursor(array); 

cursor.next(); // returns just the first element of the array 

그러니 그냥 이터레이터를 작성하는 일반적인 방법. 더 많은 기능을 원하면 다른 방법을 프로토 타입에 추가하면됩니다.

+1

+1. 그러나 이것이 기존 API를 사용하여 가능할 것인지 찾고 있습니다. –

+0

@ IonicăBizău 기본적으로 "커서"를 "배열"로 변경했습니다. 따라서 사용할 수있는 "API"가 없습니다. 반복기를 작성하는 것은 모든 언어에서 매우 간단합니다. –

+0

정확합니다. Mongo devs의 공식 답변을 기다렸습니다. https://jira.mongodb.org/browse/NODE-164 –