首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AdonisJS @manyToMany关系未加载所有列

AdonisJS @manyToMany关系未加载所有列
EN

Stack Overflow用户
提问于 2022-09-01 04:18:02
回答 1查看 34关注 0票数 0

目前,我正在与AdonisJS v5打交道,并且在ManyToMany关系方面遇到了一些问题。

我有目前的两种型号

用户

代码语言:javascript
运行
复制
export default class User extends BaseModel {
    @column({ isPrimary: true })
    public id: Buffer;
    
    ...

    @manyToMany(() => Family)
    public families: ManyToMany<typeof Family>;
}

家庭

代码语言:javascript
运行
复制
export default class Family extends BaseModel {
    @column({
        isPrimary: true,
    })
    public id: Buffer;

    @column({
        serializeAs: null,
    })
    public UserId: Buffer;

    public name: string;

    @manyToMany(() => User)
    public users: ManyToMany<typeof User>;
}

然后,我有一个支点表FamilyToUser,它具有UserId和FamilyId的基本结构。

然后,我将通过电子邮件找到用户如下

代码语言:javascript
运行
复制
const user = await User.findBy(
    'email',
    'email@email.com'
);

然后尝试使用ManyToMany加载await user.load('families');关系。

现在,当我循环遍历家庭并输出所有内容时,它并不像我想象的那样拉动模型中的列。如果我做下面的事

代码语言:javascript
运行
复制
await user.load('families', (familyQuery) => {
    familyQuery.whereNull('deleted');
});

const familiesJson = user.families.map((family) => family.serialize());
console.log(familiesJson);

我会得到如下打印出来的

代码语言:javascript
运行
复制
[ { Id: 'fc7ffd40-298c-11ed-ad7e-759bb78c2a4c' } ]

如您所见,它只返回Id列,而不返回name列。现在,如果按以下方式打印出这个家庭

代码语言:javascript
运行
复制
user.families.forEach((family) => {
    console.log(family);
});

我得到以下打印输出

代码语言:javascript
运行
复制
Family {
    ...
    '$extras': {
        name: 'Surname',
        pivot_Userid: <Buffer 11 ed 29 8a fa 64 f7 60 98 47 89 c2 78 79 62 24>,
        pivot_Familyid: <Buffer 11 ed 29 8c fc 7f fd 40 ad 7e 75 9b b7 8c 2a 4c>
    },
    ...
}

其中,它将列和pivot表Fks打印到$extras属性中。查看找到的这里文档,该属性应该只包含枢轴表列。

所以,我要问的是,如何让它正确地加载我的家庭模型的名称,等等。其中还有其他列(createdAt,updatedAt等),但为了简洁起见,我刚刚删除了这些列。

提前感谢您的帮助。我已经被困在这上面两天了

EN

Stack Overflow用户

回答已采纳

发布于 2022-09-01 21:18:51

好的。所以我觉得自己像个白痴。基本上,我有一个使用PascalNamingCase的策略,它在数据库中查找列"Name“,但是,我将其称为”name“.

因此,解决方案,确保您的列名与您的命名策略相匹配,否则Adonis将取出列,但不会像您想象的那样匹配它们。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73564260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档