Node.js 如何将两个表和相邻表的输出字段合并在一起?
各位,能告诉我吗 我使用knex.js的objective.js(ORM)库 加入用户和角色表,一切都很好 我使用它:Node.js 如何将两个表和相邻表的输出字段合并在一起?,node.js,knex.js,objection.js,Node.js,Knex.js,Objection.js,各位,能告诉我吗 我使用knex.js的objective.js(ORM)库 加入用户和角色表,一切都很好 我使用它: const users=wait User.query().eager().roles') 我明白了: {“id”:1,“电子邮件”:ann@mail.com“,”密码“:”qwe“,”角色“:1,“角色“:{”id“:1,“名称“:”admin“}} 但是我怎样才能得到一个平面结构呢 {“id”:1,“电子邮件”:ann@mail.com“,”密码“:”qwe“,”角色“ad
const users=wait User.query().eager().roles')
我明白了:
{“id”:1,“电子邮件”:ann@mail.com“,”密码“:”qwe“,”角色“:1,“角色“:{”id“:1,“名称“:”admin“}}
但是我怎样才能得到一个平面结构呢
{“id”:1,“电子邮件”:ann@mail.com“,”密码“:”qwe“,”角色“admin”}
我通常希望通过一个hasonrelation
关系来实现这一点,所以我将假设这就是您在这里所拥有的:
{
"id": 1,
"email": "ann@mail.com",
"password": "qwe",
"role": 1,
"roles": {
"id":1,
"name": "admin"
}
}
如果您的用户一次只能有一个角色,这应该可以。要获得平面结构,您可以使用JavaScript对其进行后期处理:
return {
...user,
role: roles.name
}
或创建一个:
这不会阻止添加角色
对象,但会为JSON中的名称提供一级别名
export default class User extends Model {
static get virtualAttributes() {
return ['roleName'];
}
roleName() {
return this.roles.name;
}
// ...
}