2012-03-01 6 views
1

coffeescript를 사용하여 node.js를 학습 할 때 손을 잡으려고하지만 흐름에 머리를 감싸는 데 문제가 있습니다.Node.js CoffeeScript 비동기 스타일 및 루프

첫 번째 작업은 csv 파일을 구문 분석하고 구문 분석 된 레코드를 mongodb에 추가하는 것입니다. 그렇게 마무리 할 마지막 경우

https://gist.github.com/1953474

내가 콜백의 마지막에 호출 및 감소에 addRule 기능 단위는보고 확인하는 간단한 카운터 VAR를 사용 : 여기에 내가 지금까지 무엇을 가지고 exit를 호출 할 수 있습니다. 나는 이것이 올바른 형태라고 생각하지만 더 적절한 방법이 있다면 나는 제안에 개방적이다.

실제 문제는 아무것도 구문 분석되지 않거나 데이터베이스에 추가되지 않는다는 것입니다. 처음에 저는 연결이 성립되기를 기다리지 않고 있지만 지금은 완전히 혼란 스럽다는 것을 깨달았습니다. 내가 방금 몽구스와 함께 일해야하는 방법에 관한 약간의 세부 사항을 놓친 것이 궁금합니다 ...

아이디어?

+0

print (util.print에서 인쇄), 그 외, 몽구스를 피하고 대신 기본 드라이버를 사용하는 것이 좋습니다. – Raynos

답변

0

카운터에 특별히 두 가지 버그가 있습니다.

레코드 수가 0이면 사용자가 종료하지 않습니다.

그리고 오히려 그 전에 감소합니다. 귀하의 다른 실수는 커피 스크립트를 사용 n_out-- 반환 n_out, --n_out 반환 n_out - 1

, 당신은 후회합니다.

addRules = (records) -> 
    n_out = 1 
    next =() -> 
    if --n_out is 0 
     exit() 
    next() 
    addRule = (r) -> 
    n_out++ 
    util.print n_out 
    Rule.update {state: r.state}, r, {upsert: true}, (err) -> 
     if err 
     util.print r.state + ": " + err + "\n" 
     else 
     util.print "processed " + r.state + " rule\n" 
     next() 
    addRule(r) for r of records 
+1

이것은 AND이고 ... 아무것도 <<를 사용하여 레코드 배열에 추가되지 않았습니다. 나는 감소 오류를 정정하고 << 대신에 밀어 넣기를 사용했고 효과가있었습니다. https://gist.github.com/1954107 @Raynos : CoffeeScript에 대한 편견이있는 이유는 무엇입니까? – Tim

+0

@Tim https://twitter.com/#!/Raynos2/status/173884231473299457 – Raynos

+0

글쎄, 좋아,하지만 내게는 더 생산적이되는 것은 순수 주의자의 감수성을 능가한다. CoffeeScript가 Ruby와 Python에 대해 좋아하는 것들을 멋지게 조화 시키지만 일반적으로 더 나은 성능을 제공합니다. 이걸 도와 주셔서 다시 한번 감사드립니다! – Tim