2016-08-03 1 views
-2

에서 필드를 추출 (here을 발견) :내가 자바 스크립트 SDK 인 Splunk를 사용하여 코드의 주어진 조각에서 필드를 사용하기 위해 노력하고있어이 스크립트

// Search everything and return the first 100 results 
var searchQuery = "search * | head 100"; 

// Set the search parameters 
var searchParams = { 
    exec_mode: "normal", 
    earliest_time: "2012-06-20T16:27:43.000-07:00" 
}; 

// Run a normal search that immediately returns the job's SID 
service.search(
    searchQuery, 
    searchParams, 
    function(err, job) { 

    // Display the job's search ID 
    console.log("Job SID: ", job.sid); 

    // Poll the status of the search job 
    job.track({period: 200}, { 
     done: function(job) { 
     console.log("Done!"); 
     // Get the results and print them 
     job.results({}, function(err, results, job) { 
      var rows = results.rows; 
     //I want the 'rows' array 
     }); 

     }, 
     failed: function(job) { 
     console.log("Job failed") 
     }, 
     error: function(err) { 
     done(err); 
     } 
    }); 

    } 
); 

아이디어는 배열 가변적이고 '행을 얻을 수 있습니다 '이 스 니펫이 실행 된 후에 console.log (행)를 실행할 수 있습니다.

회선 아래에 회신을 추가하는 것은 저에게 효과적이지 않습니다.

답변

0

전세계에 rows에 액세스하려면 var rows;을 전역 범위에 선언하고 rows = results.rows;을 사용할 수 있습니다. 과제에 var 키워드를 남기지 않는 한 실제로 신고하지 않아도됩니다.

상기 할당이 비동기 콜백에서 호출되고 있음을 유의하십시오. 이것은 아마도 service.search(...)이 반환 된 직후에 실행되지 않았을 것임을 의미합니다. 경우에 따라 비동기 함수는 함수가 반환 된 후 오랜 시간 콜백을 호출 할 수 있습니다. 따라서 작업이 완료된 후에 만 ​​코드를 실행하려면 해당 코드를 콜백 내에 넣거나 호출하십시오.

+0

도움 주셔서 감사합니다. 콜백 내에 'console.log (행)'을 추가하는 방법은 무엇입니까? 함수의 어느 부분이 비동기이고 그 이유는 확실하지 않습니다. –

+0

나는 분명히해야한다, 나의 의도는 app.get() {[splunk api call];을 통해 배열 'rows'를 보낸다. resynch(); res.send (rows);},하지만 비동기 함수가 실행을 마친 후에 만 ​​같아진다. –

+0

최종 콜백 함수는 호출 된 익명 함수 인'function (err, results, job) {...}'이다. 모든 비동기 작업의 끝. 'var rows = ...; 뒤에'res.send (rows);를 삽입하면된다. 'res' 변수는 둘러싸는 코드로부터 "캡쳐"됩니다 – qxz

관련 문제