2016-06-06 4 views
1

텍스트 파일에 발음 데이터가있는 단어 목록이 있습니다. 내가하고 싶은 것은 사용자가 단어를 입력하도록 한 다음 프로그램에서 해당 파일의 해당 단어에 대한 데이터가 있는지 확인하도록합니다. 나는 RxJs에서 그것을하고 싶습니다.RxJs 다른 관찰 가능 필터 적용하기

아래 코드는 내가 원했던 것 중 가장 근접한 코드입니다. 내 메인 스트림 내에서 'checkstream'이라는 종속 스트림을 만드는 필터 호출이 있습니다. 필자가 이해할 수없는 것은 주 스트림의 필터 메소드에서 종속 스트림의 결과를 사용하는 방법입니다. 현재 필터 메소드가 실패하지만 콘솔 로깅을 통해 데이터를 화면에 표시합니다.

내 텍스트 파일에 단어가 들어있는 데이터가있는 경우 체크 스트림은 결국 검색하고 사용자에게 표시하려는 데이터 만 포함하는 관찰 가능 데이터가됩니다. 어떻게 든 데이터를 메인 스트림의 소비자에게 보내고 싶지만 그렇게하는 방법을 모르겠습니다.

제공 할 수있는 도움에 감사드립니다. 심지어 약간의 직감만으로도 유용 할 것입니다.

var Rx = require('rx'); 
var RxNode = require('rx-node'); 
var fs = require('fs'); 
var split = require('split'); 

    RxNode.fromReadableStream(process.stdin) 
     .map((inputData) => { 
      var inputWord = inputData.toString().trim(); 
      return inputWord; 
     }) 
     .map((inputWord) => { 

      var checkStream = fs.createReadStream('./dict.txt'); 

      RxNode.fromReadableStream(checkStream.pipe(split())) 
       .map((lineFromFile) => { 
        return JSON.parse(lineFromFile); 
       }) 
       .filter((parsedDataToCheck) => { 
        return parsedDataToCheck.word.toLowerCase().trim() === inputWord; }) 
       .subscribe((dataThatMatches) => { console.log(dataThatMatches) }); 

      return dataToReturn; 
     }) 
     .subscribe(function(dataToReturn) { 
      console.log(dataToReturn); 
     }); 

답변

0

아마 이런 식으로 뭔가 : 표준 입력에서 입력 단어 때문에 읽는 비동기 FS로 여과 한 후 다시 정렬받을 가능성이 있음을

var Rx = require('rx'); 
var RxNode = require('rx-node'); 
var fs = require('fs'); 
var split = require('split'); 

RxNode.fromReadableStream(process.stdin).map( 
    inputData => inputData.toString().trim() 
).flatMap(inputWord => { 
    var checkStream = fs.createReadStream('./dict.txt'); 
    return RxNode.fromReadableStream(
     checkStream.pipe(split()) 
    ).map(
     lineFromFile => JSON.parse(lineFromFile) 
    ).find(
     parsedDataToCheck => parsedDataToCheck.word.toLowerCase().trim() === inputWord 
    ); 
}).subscribe(dataToReturn => { 
    console.log(dataToReturn); 
}); 

참고.

관련 문제