剛學ember.js,並開始構建應用程序與ember-app-kit。燼-APP-套件 - 磕碰與數據的API從外部文件
我使用的是提供的API存根存根出的API,但我還是決定在外部JSON文件改爲「固定數據」來使用。這個決定的原因 - 我將使用相同的json文件來測試我的燼寶應用以及rails api後端。 Here's以我的json文件爲例。
所以我api-stub/routes.js
目前看起來是這樣的:
工作實現
var path = require('path');
var fs = require('fs');
// going to sibling directory
var fixtureDir = path.resolve(__dirname, '../..', 'lightfixtures')
module.exports = function (server) {
// Create an API namespace, so that the root does not
// have to be repeated for each end point.
server.namespace('/api', function() {
var locationsProtocol = JSON.parse(fs.readFileSync(fixtureDir + '/locations.json'));
var roomsProtocol = JSON.parse(fs.readFileSync(fixtureDir + '/rooms.json'));
// stub location list request
server.get(locationsProtocol[0].request.url, function (req, res) {
res.send(locationsProtocol[0].response.data);
});
// stub individual location request
server.get(locationsProtocol[1].request.url, function (req, res) {
res.send(locationsProtocol[1].response.data);
});
// stub room list request
server.get(roomsProtocol[0].request.url, function (req, res) {
res.send(roomsProtocol[0].response.data);
});
// stub individual room request
server.get(roomsProtocol[1].request.url, function (req, res) {
res.send(roomsProtocol[1].response.data);
});
});
};
所以,在閱讀文件,並解析它的零部件磕碰適當請求,工作正常 - 但看起來非常多餘。我想遍歷解析的JSON和生成stub的所有元素,擦乾,並可以很容易地添加更多的存根,這樣的事情:
期望的實施
...
var locationsProtocol = JSON.parse(fs.readFileSync(fixtureDir + '/locations.json'));
var roomsProtocol = JSON.parse(fs.readFileSync(fixtureDir + '/rooms.json'));
function respondToEach(json) {
for (var i = 0; i < json.length; i++) {
server.get(json[i].request.url, function (req, res) {
res.send(json[i].response.data);
});
}
}
respondToEach(locationsProtocol);
respondToEach(roomsProtocol);
...
但它失敗!灰燼拋出一個默認的錯誤,並在網絡窗格中聲稱,它得到一個內部服務器錯誤(500),和響應節說「類型錯誤:無法讀取未定義的屬性‘響應’」(指示線是這個 - res.send(json[i].response.data);
我很困惑 - 我想工作的實施和「理想」的實現應該產生完全相同的輸出 - 但它不是這樣的人可以幫我瞭解在哪裏我失敗(即重構版本的區別了),也許。我怎麼可以解決這個問題?
謝謝謝謝謝謝!我今天學到了東西。 :) – apprenticeDev