0
我創建使用Laravel框架和基礎上的Laracasts教程我的代碼結構中的多個REST API項目。不過,我們正在決定將一些使用NodeJs的項目作爲後端。我開始學習節點,我試圖在Node中複製它。我能夠做到這一點單個對象的響應,但對於多個對象,我似乎無法使它工作。的NodeJS:數據變形金剛喜歡在Laravel的PHP框架
這是我的控制器:
index(req,res) {
User
.findAll()
.then(function(users){
res.json(api.respond(transfomer.transformCollection(users)));
})
.catch(function(error){
res.json(api.respondWithError('users not found',error));
});
}
API控制器:
module.exports = {
// response w/o error
respond: function(data,msg,status) {
if (msg == null) {
return {
'status': status || true,
'data': data
};
} else {
return {
'status': true,
'message': msg,
'data': data
};
}
},
// response with error
respondWithError: function(msg,error) {
var self = this;
var status = false;
var data = {
'error': error
};
return this.respond(data,msg,status);
},
};
transformer.js
module.exports = {
// single transformation
transform (user) {
return {
'id' : user.id,
'username': user.username,
'firstname': user.firstname,
'lastname': user.lastname,
'address': user.address,
'phone': user.phone,
'mobile': user.mobile,
'status': user.status
};
},
//
transformCollection(users) {
var self = this;
var data = [];
for (var i = 0; i <= users.length; i++) {
data.push(this.transform(users[i]));
}
return data;
}
};
樣本輸出
{
"status": true,
"data": [
{
"id": 1,
"username": "[email protected]",
"firstname": "Jon",
"lastname": "Doe",
"address": "Homes",
"phone": "+966501212121",
"mobile": "+966501212121",
"status": "NOT VERIFIED"
},
{
"id": 1,
"username": "[email protected]",
"firstname": "Jon",
"lastname": "Doe",
"address": "Homes",
"phone": "+966501212121",
"mobile": "+966501212121",
"status": "NOT VERIFIED"
},
{
"id": 1,
"username": "[email protected]",
"firstname": "Jon",
"lastname": "Doe",
"address": "Homes",
"phone": "+966501212121",
"mobile": "+966501212121",
"status": "NOT VERIFIED"
},
{
"id": 1,
"username": "[email protected]",
"firstname": "Jon",
"lastname": "Doe",
"address": "Homes",
"phone": "+966501212121",
"mobile": "+966501212121",
"status": "NOT VERIFIED"
},
]
}
不好意思問這個,因爲我對節點有點新鮮。是否有可能實現輸出,因爲我嘗試了不同的方式,但我仍然得到錯誤。順便說一句,我正在使用數據庫sequelize。
謝謝。
在你的控制器,你在呼喚'變換(用戶)'但是你'users',不'user'。 –
我不知道幼蟲,但你可以看到'像'express'流行框架的NodeJS可用middleware',我想他們可以幫助你achive你想要什麼。並在一個側面說明,你可以刪除'$'前綴的變量:) –
@RonDadon我不認爲這是中間件。我在這段代碼上使用中間件進行jwt令牌認證。它只是在改變數據。循環訪問從數據庫返回的多個對象,並按照我們希望的格式對每個對象進行格式化。 –