簡體   English   中英

NODE.js無法使用Restler獲得的寧靜數據

[英]NODE.js unable to use restful data obtained by restler

我正在將restler與NODE.JS一起使用,以從實時供稿中獲取數據。 如果我只想在屏幕上顯示整個提要,它的效果就很好,但是我想實際抓取提要並將其過濾掉,只發出需要的內容。

這是我的API可以正常工作的代碼段

app.get('/cis/public/:crs', function (req, res) {

    fullpath = 'http://(domain)/timetables/search_crs.php?crs='+req.params.crs;

    rest.get(fullpath).on('complete', function(result) {
        if (result instanceof Error) {
            console.log('Error:', result.message);
            this.retry(1000); // try again after 1 sec
        } else {
            res.send(result);
        }
    });

});

這將在屏幕上顯示完整的供稿,盡管其格式沒有我期望的那樣。

這是我想做的事的一個例子,如果我正在處理本地JSON文件,這可以很好地工作。

var結果= JSON.parse(fs.readFileSync('./ data / ppm.json','utf8'));

但是,當以以下格式使用restful時,我會失敗

app.get('/cis/public/:crs', function (req, res) {

    fullpath = 'http://(domain)/timetables/search_crs.php?crs='+req.params.crs;

    rest.get(fullpath).on('complete', function(result) {
        if (result instanceof Error) {
            console.log('Error:', result.message);
            this.retry(1000); // try again after 1 sec
        } else {
            var National = result.GetStationBoardResult.locationName;
            res.send(National);
        }
    });

});

引發的錯誤是

            var National = result.GetStationBoardResult.locationName;
                                                       ^
TypeError: Cannot read property 'locationName' of undefined

如何使用從節點中的Restler獲得的數據,而不僅僅是在屏幕上顯示。

這是返回的JSON的示例(頂部)

{
  "GetStationBoardResult": {
    "generatedAt": "2015-03-18T10:49:36.9120348+00:00",
    "locationName": "Swindon",
    "crs": "SWI",
    "platformAvailable": true,
    "trainServices": {

謝謝

編輯:這是現在可以給我有用和可用的JSON的最后一段代碼。

app.get('/cis/public/:crs/:total', function (req, res) {

    fullpath = 'http://(domain)/timetables/search_crs.php?crs='+req.params.crs+'&total='+req.params.total;

    rest.get(fullpath).on('complete', function(result) {
        if (result instanceof Error) {
            console.log('Error:', result.message);
            this.retry(1000); // try again after 1 sec
        } else {
            var Results = JSON.parse(result);
            res.send(Results);
        }
    });

});

現在,我可以對結果進行其他操作。 並將JSON分解為更多可用(和過濾后的)信息

當您console.log會發生什么

result

根據錯誤,您的對象結果沒有名為的屬性

GetStationBoardResult

編輯:由於結果是字符串而不是對象,將使用以下方法解決:

var National = JSON.parse(result).GetStationBoardResult.locationName;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM