2017-04-04 52 views
0

我有一個AngularJS服務稱爲sensorReadingsAPI,其具有與get下面的函數:如何通過AngularJS服務將變量發送到NodeJS控制器?

var _countSensorReadingsFilter = function() { 
    return $http.get(config.baseUrl + "/sensorReading/countFilter").then(function (data,status) { 
    sensorReadingCountFilter = data.data; 
    return Number(sensorReadingCountFilter); 
    }).catch(function() {}); 
}; 

/countFilter以的NodeJS控制器定義:

module.exports = { 
    countFilter: function (req, res) { 
    return res.sensorReadingCountFilter(); 
    } 
}; 

而且sensorReadingCountFilter如下:

module.exports = function sensorReadingCountFilter(statusCode){ 

    var req = this.req; 
    var res = this.res; 

    SensorReading.count({deviceNum:'MBA002'}).exec(function countCB(error, found) { 
    return res.view({val: found}); 
    }); 
}; 

現在,計數是靜態的(寫入的地方是{deviceNum:'MBA002'})。我需要一種方法來使這個值變成動態的,使用一個變量,最好從AngularJS控制器發送。我有幾個設備,有可能增加更多的設備,並且不想爲每個設備創建/countFilter模塊。

換句話說,一種將變量從AngularJS服務發送到NodeJS控制器的方法。當尋找這樣做的方法時,我幾乎找不到任何東西。

對於清除:所有這些將返回選定設備的讀數數量,並且config.baseUrl是本地機器和端口。

回答

1

您可以在您的$http.get('url-here?param1=1,param2=2')中使用url參數,然後您可以在服務器端req.query.param1req對象中訪問這些參數。

您還可以在配置對象指定則params的$ HTTP:

$http.get('my-url-here', { params: {deviceNum:'MBA002'} }) 
    .success() 
    ... 
+0

我不會說 「也」。使用'params'是正確的做法。手動編寫URL通常最終會丟失'encodeURIComponent'調用。 – jcaron

+0

我不知道有可能使用'?param'來使用url參數。這正是我需要的。 – Ernani

+0

作爲一個方面說明,你知道是否讓服務器端(在這種情況下是NodeJS)處理數據庫請求的最佳實踐,還是我可以直接從AngularJS執行它們? – Ernani

相關問題