Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/atorber/vika-orm


https://github.com/atorber/vika-orm

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

        

# vika-orm

## 简介

维格表vika的ts ORM

## 快速开始

```shell
npm i
npm run start
```

## 使用

1. 安装依赖

```shell
npm i vika-orm
```

1. 示例代码

```ts
import { log } from 'console'
import { BaseEntity, VikaOptions, MappingOptions, wait } from 'vika-orm' // 导入 BaseEntity, VikaOptions, 和 MappingOptions 类型/类
import { v4 as uuidv4 } from 'uuid'

async function main () {
const vikaOptions: VikaOptions = { // 定义 Vika API 的选项
apiKey: '替换为你自己的vika token', // vika API 密钥
baseId: '替换为你自己的表id', // 设置 base ID
}

const mappingOptions: MappingOptions = { // 定义字段映射选项
fieldMapping: { // 字段映射
email: 'Email',
id: 'ID',
name: 'Name',
},
tableName: 'users', // 表名
}

/**
* 用户实体
*/
class User extends BaseEntity { // 用户类继承 BaseEntity

name?: string // 定义名字属性,可选
email?: string // 定义电子邮件属性,可选
id?:string

// protected static override recordId: string = '' // 定义记录ID,初始为空字符串

protected static override mappingOptions: MappingOptions = mappingOptions // 设置映射选项为上面定义的 mappingOptions

protected static override getMappingOptions (): MappingOptions { // 获取映射选项的方法
return this.mappingOptions // 返回当前类的映射选项
}

static override setMappingOptions (options: MappingOptions) { // 设置映射选项的方法
this.mappingOptions = options // 更新当前类的映射选项
}

}

User.setVikaOptions(vikaOptions) // 设置 Vika API 选项

// 使用示例

// 增
const newUser1 = new User() // 创建一个新的用户实例
newUser1.name = 'Bob' // 设置用户名为 Bob
newUser1.email = '[email protected]' // 设置用户电子邮件为 [email protected]
newUser1.id = uuidv4()
const res = await newUser1.save() // 保存用户实例
log('保存newUser1:', JSON.stringify(res)) // 输出新用户的信息
await wait(500) // 等待 500 毫秒

// 增
const newUser2 = await User.create({ // 创建一个新的用户
email: '[email protected]', // 用户电子邮件为 [email protected]
id:uuidv4(),
name: 'Test', // 用户名为 Test
})

log('保存newUser2:', JSON.stringify(newUser2)) // 输出新用户的信息
await wait(500) // 等待 500 毫秒

// 改
const updateRes = await User.update(newUser2.recordId, { email: '[email protected]' } as Partial) // 更新新用户的电子邮件
log('更新newUser2:', JSON.stringify(updateRes)) // 输出更新后的新用户信息
await wait(500) // 等待 500 毫秒

// 查
const queryRes = await User.findById(newUser2.recordId)
log('查询findById:', JSON.stringify(queryRes)) // 输出更新后的新用户信息
await wait(500) // 等待 500 毫秒

const query2Res = await User.findByField('email', '[email protected]')
log('查询findByField:', JSON.stringify(query2Res)) // 输出更新后的新用户信息
await wait(500) // 等待 500 毫秒

// 删
const deleteRes = await User.delete(newUser2.recordId) // 删除新用户
log('删除newUser2:', JSON.stringify(deleteRes)) // 输出更新后的新用户信息
await wait(500) // 等待 500 毫秒

// 查
const users = await User.findAll() // 查找所有用户(当前被注释掉)
log('查询users:', JSON.stringify(users)) // 输出新用户的信息
await wait(500) // 等待 500 毫秒
}

(async function () {
await main()
})().catch(error => {
console.error(error)
})

```

## 历史版本

### v0.1.1 (2023-10-7)

1. 初始化创建代码库及npm包