的NodeJS:数据变形金刚在Laravel的PHP框架喜欢
我创建使用Laravel框架和基础上的Laracasts教程我的代码结构中的多个REST API项目。然而,我们决定使用移动作为的NodeJS后端的一些项目。我开始学习节点,我试图复制它的节点。我能做到这一点的烧毛物体响应,但对多个对象,我似乎无法使它发挥作用。
这里是我的控制器:
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数据库。
谢谢。
回答如下:您可以使用此:
let options = {raw: true, attributes: ['id', 'name', 'code', 'createdAt','updatedAt']};
country.findAndCountAll(options).then(querySnapshot => {
let total = querySnapshot.count;
resolve({docs: querySnapshot.rows, total: total})
}).catch((err) => {
reject(err)
});
的NodeJS:数据变形金刚在Laravel的PHP框架喜欢
我创建使用Laravel框架和基础上的Laracasts教程我的代码结构中的多个REST API项目。然而,我们决定使用移动作为的NodeJS后端的一些项目。我开始学习节点,我试图复制它的节点。我能做到这一点的烧毛物体响应,但对多个对象,我似乎无法使它发挥作用。
这里是我的控制器:
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数据库。
谢谢。
回答如下:您可以使用此:
let options = {raw: true, attributes: ['id', 'name', 'code', 'createdAt','updatedAt']};
country.findAndCountAll(options).then(querySnapshot => {
let total = querySnapshot.count;
resolve({docs: querySnapshot.rows, total: total})
}).catch((err) => {
reject(err)
});