首页 > 解决方案 > 如何使用 JavaScript 在 TypeORM 中使用 Active Record 模式

问题描述

TypeORM 在此处提供了用 JavaScript(没有 typescript)实现的示例。

问题是,只描述了数据映射器模式。在我当前的项目中,我想使用 Active Record 模式。

我尝试添加指向(作为字符串或对象)的extend或属性,但这不起作用。targetBaseEntity

我需要做什么?

标签: javascripttypeorm

解决方案


定义模型和模式

(模型/Nugget.js)

import typeorm from 'typeorm'
const { BaseEntity, EntitySchema } = typeorm

// "model"
export class Nugget extends BaseEntity {
    id;
    name;
}

// "schema"
export const NuggetSchema = new EntitySchema({
    name: "Nugget",
    target: Nugget, // the class above
    columns: {
        id: {
            primary: true,
            type: "int",
            generated: true
        },
        name: {
            type: "varchar"
        },
    }
})

连接时传递实体中的模式

(dbConnect.js)

import typeorm from 'typeorm'
const { createConnection } = typeorm

import { NuggetSchema } from './models/Nugget'

const connection = await createConnection({
    type: db_type, // e.g. mysql
    host: db_host,
    port: db_port,
    database: db_database,
    username: db_user,
    password: db_pass,
    synchronize: false, // set to true to modify database to match schema
    logging: false,
    entities: [
        NuggetSchema
    ]
})

导入模型并使用它来添加/删除/查询该项目(活动记录模式)

(index.js)

import './dbConnect.js'

import { Nugget } from './models/Nugget'

const nugget = new Nugget()
nugget.name = "Hi I Am A Nugget"
await nugget.save()

const nuggets = await Nugget.find({})
console.log('nuggets', nuggets)

推荐阅读