小编Gae*_*Gac的帖子

Sequelize:跨多个数据库的关系时“模型尚未定义”

我正在尝试为每个数据库实例化一个续集。DB1 中的某些表与 DB2 中的表存在关系,反之亦然。其中一种关系是 DB1.Utilisateur.contenuProvenance_id => DB2.Contenu.id 和 DB2.Contenu.utilisateur_id => DB1.Utilisateur.id。

这是 Utilisateur 模型:

@Table
export default class Utilisateur extends Model<Utilisateur> {

    @API() @PrimaryKey @AutoIncrement @Column({ type: DataType.INTEGER })
    public id!: number;

    @Column({ type: DataType.STRING, allowNull: false })
    public email!: string;

    @Column({ type: DataType.STRING, allowNull: false })
    public nom!: string;

    @ForeignKey(() => Utilisateur)
    @Column({ type: DataType.INTEGER, allowNull: true })
    public parrain_id?: number;

    @ForeignKey(() => Contenu)
    @Column({ type: DataType.INTEGER, allowNull: true })
    public contenuProvenance_id?: number;
}
Run Code Online (Sandbox Code Playgroud)

(是的,我正在使用sequelize-typescript将我的模型声明为Typescript类)

以下是我的 Sequelize 实例的创建方式:

let …
Run Code Online (Sandbox Code Playgroud)

javascript orm node.js sequelize.js sequelize-typescript

9
推荐指数
1
解决办法
4424
查看次数

Typescript Compiler API:生成类型标识符的完整属性树状图

给定一个类型标识符,我正在寻找一种方法来生成对象类型 AST 的完整树状结构。举例来说,如果我有:

文件1.ts

type Content = {
    title: string,
    image: string,
    dims: number[]
}
Run Code Online (Sandbox Code Playgroud)

文件2.ts

type BlogPost = Pick<Content, 'title'|'image'>

type User {
    name: string,
    email: string,
    news: BlogPost[]
}
Run Code Online (Sandbox Code Playgroud)

文件3.ts

const test: User = { ... };
Run Code Online (Sandbox Code Playgroud)

我的代码必须能够从用户标识符推断出如下列表:

name
email
news.title
news.image
Run Code Online (Sandbox Code Playgroud)

我通过使用 进行了几项实验checker.getTypeAtLocation,逐一迭代每个属性,找到正确的符号,并尝试推断属性的名称。

但我认为(希望)这种方法对于完成如此简单的事情来说太过分了,因为除了对象类型之外,我还必须处理属性的每种可能类型:Picks、Excludes、Array、Omit、KeyOf,...

我想要的只是类型的最终完整形式的属性列表。

所以我的问题是:

Typescript 编译器 API 是否提供工具来帮助我完成任务?举例来说,给定这样一个类型:

type Content = { title: string, id: number }
type Hello = Pick< Content, 'id' >
Run Code Online (Sandbox Code Playgroud)

生成最终完整的 AST,如下所示:

type Hello = {
    id: number
} …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-compiler-api

5
推荐指数
1
解决办法
837
查看次数