我有一个表User,其列为id
,email
和password
。但我只想返回ID和电子邮件,而不是像这样显示列名:
{
"users": [
{
"id": 1,
"email": "john@",
}
]
}
我想显示一些东西:
{
"users": [
{
"id": 1,
"email_user": "john@",
}
]
}
这是我拨打电话搜索所有用户的方式:
User.fetchAll({columns:['id','email']}).then((resData) => {
return res.json({users: resData.map(function(item) {
return item.fields();
})});
}).catch(err => {
console.log(err);
});
答案 0 :(得分:0)
我假设您当前的代码item.fields()
返回两个结果中的第一个。映射时,应该能够创建完全不同的对象,因此可以根据需要自定义结果:
User.fetchAll({columns:['id','email']}).then((resData) => {
return res.json({users: resData.map(function(item) {
const fields = item.fields();
return { id: fields.id, email_user: fields.email };
})});
}).catch(err => {
console.log(err);
});
答案 1 :(得分:0)
请参阅书架文档。
https://bookshelfjs.org/api.html#Model-instance-hidden
使具有相同值的列具有备用名称。您可以使用bookshelf-virtuals-plugin来实现。
https://github.com/bookshelf/virtuals-plugin
示例:
bookshelf.plugin('bookshelf-virtuals-plugin');
const Users = bookshelf.model('Users', {
tableName: 'users',
hidden: ['password'],
virtuals: {
email: function () {
return this.get("email_user");
},
},
})
User.fetchAll().then((resData) => {
res.status(200).send(resData.toJSON({ virtuals: true }))
}).catch(err => {
console.log(err);
});