2017-02-08 4 views
0

私のアプリケーションには、それらのうちの1つが削除用の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 
    }) 
} 

その実行を進める必要があります新しいPromiseをインスタンス化しますが、同じ問題です。上部に作成された変数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で例に従うと、このようにそれをしなければなりませんでした。それでおしまい。