2012-08-03 5 views
0

좋아, 전구를 켰다 켰다. 나는 거의 일주일 동안 이것을 고심하고 있으며 점점 더 혼란스러워집니다.몽구스, 노드 및 비동기 코딩 하우투

나는 이러한 컬렉션을 가지고

Customers 
Orders (linked to Customer by Customer_id) 
OrderLines (linked to Order by Order_id) 
Salesreps (linked to Customer by Customer_id) 

내가 어떤 포함 된 문서가 없습니다.

Customer_1 

Order#1:First_OrderLine_of_Order_Number 
Order#n:First_OrderLine_of_Order_Number 

SalesRep_of_Customer_Name 

... 

Customer_n 

Order#1:First_OrderLine_of_Order_Number 
Order#n:First_OrderLine_of_Order_Number 

SalesRep_of_Customer_Name 

누군가가 나에게 노드에서이 작업을 수행하고 몽구스하는 방법을 설명하는 의사 코드를 줄 수 :

은 다음 포함 된 데이터의 문자열을 얻기 위해 내가하고 싶은입니까?

답변

2

특히 한 번에 두 가지 이상을 시도하고 배우는 경우 매우 혼란스럽고 혼란 스럽습니다. 물건을 작동 시키려고 해킹하지 마세요. 하단에서 시작하여 스택 위로 올라가십시오. 의존하는 계층을 완전히 이해할 때까지 다음 계층으로 이동하려는 유혹에 저항하십시오. 자바 스크립트

  • Node.js를
  • MongoDB를가
  • 몽구스
  • 1 단계에서 forEach 기술을 배우게됩니다, 2 단계에서 비동기 콜백 기술, 당신은 이해할 수있을

    1. 어떻게 3 단계에서 find 문서를 작성하면 4 단계에서 모두 처리 할 수 ​​있습니다. 진정으로 '생선을 익히고 싶다면'바로 가기가 없습니다.

    +0

    노드에서 비동기 라이브러리를 사용하기 시작했습니다.) 도움이되는 부분에 도달했습니다. 그러나, 아직 확실하지는 않지만, 그것이 작동하는 이유는 ... 이번 주 프로젝트입니다! – jmls

    0

    NoSQL (기술에 실제로 나쁜 이름)을 다룰 때는 다른 방식으로 데이터 세트를 설정해야합니다.

    mongo에는 조인이 없으므로 데이터를 리팩터링해야합니다. 가능한 경우 임베디드 문서를 생각해보십시오 (예 : 주문 라인이 포함 된 주문).

    I는 다음과 같이 사용하십시오 : 참조 된 컬렉션에 최소한의 기준을 유지

    Order: { 
        _id: ObjectId 
    , user: DBRef // (or ObjectId) 
    , lines: [ 
        {foo: "bar"} 
        , ... 
        ] 
    } 
    
    User: { 
        _id: ObjectId 
    , salesref: { _id: ObjectId, name: "James Brown"} 
    , more_data ... 
    } 
    
    SalesRef: { 
        _id: ObjectId 
    , more_data... 
    } 
    

    , 당신도 주문 내부에 user: {name: "Max Power", sales: "James Brown"}를 추가하지만 당신은에 의해 일관성을 유지해야합니다 명심 수 문서 수정/삽입하는 동안 손을.

    +0

    감사합니다. 정말 정리해야 할 DB 구조가 아닙니다 (다음 작업). find ({})와 forEach의 콜백 (callback) 때문에 모든 데이터가 예상대로 정렬되지 않습니다. – jmls

    +1

    알아,하지만 손으로 ​​조인을 사용하면 오류가 발생하기 쉽습니다. 나중에 약간의 시간이 필요할 때 의사 코드 로직을 사용하여 내 대답을 편집 할 것입니다. 그런데 나는 그것을 할 수 있도록하기 위해 [Step] (https://github.com/creationix/step/)의'parallel' 함수를 사용할 것입니다. – LoG