2017-02-08 7 views
0

내 응용 프로그램에 삭제할 API 끝점이 있습니다. 고유 한 data-id은 Controller 클래스에 액세스하는 매개 변수 /feeds/:feedID에 전달되며 param 값에 Operation 클래스의 변수 feedID을 제공합니다. 문제 : feedID 변수는 인스턴스 내부에 undefined이됩니다. 코드 :node-horseman evaluate의 변수가 정의되지 않았습니다.

컨트롤러 : 끝점에 액세스 할 때 실행됩니다. 이는 추가 사용

* destroy(request, response) { 
    const googleAlertsOperation = new GoogleAlertsOperation() 

    googleAlertsOperation.feedID = request.param('feedID') 
    ... 

작업의 작업 클래스의 변수에 변수 값 저장 잡고 : 새로운 feedID 값으로를, 내가없이 시도

* deleteRSSFeed() { 
    var feedID = this.feedID //<-- Has the value passed from the Controller 

    return new Promise((resolve, reject) => { 
    horseman 
     .userAgent(this.userAgent) 
     .open('https://google.com/alerts') 
     .evaluate(function() { 
     try { 
      return '#manage-alerts-div li[data-id="' + feedID + '"]' //<-- Undefined 
     } catch(e) { 
      reject(e) 
     } 
     }).then(function(data) { 
     console.log(data) 
     }) 
     .close() 
    }).catch((err) => { 
    this.addError(HTTPResponse.STATUS_INTERNAL_SERVER_ERROR, reject(err)) 

    return false 
    }) 
} 

의 실행을 진행해야 새로운 약속을 인스턴스화하지만 같은 문제가 발생합니다. 상단에 생성 된 feedID 변수를 전달하는 대신 this.feedID을 전달하면 undefined으로 바뀝니다.

+0

저주입니까? !!!! –

+0

입니다. 적어도 나는 새로운 문제를 발견 할 필요가있는이 문제를 발견했다. 사과. – mfgabriel92

+0

형제라고 느낍니다! 때때로 코드는 단지 머리카락을 회색으로 보이기를 원합니다! –

답변

1

나는 그것을 알아 냈다.

.evaluate(function(selector) { 
    return 'li[data-id="' + selector + '"]' 
}, this.feedID) 
.then(function(data) { 
    console.log(data) 
}) 

공지 사항 매개 변수 selector : 나는 documentation의 예를 따라가이 좋아했습니다. 그게 전부 야.