0.0.1 • Published 1 year ago

@zhinjs/database v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@zhinjs/database

zhin数据库封装

usage

  1. 新建入口文件,并键入如下代码
import {createDatabase, defineModel, useModel} from "@zhinjs/database";
import {createServer} from 'http'
import {DataTypes} from "sequelize";
// 1. 创建数据库
const db=createDatabase({
    dialect:'sqlite',
    storage:"sqlite.db",
    scan_dir:'./models'// 自动扫描指定目录下的Model
})
  1. 选定一个目录作为Model存储目录(需与createTable传入的scan_dir路径一致)
  2. 在目录内,使用Ts定义模型
import {BaseModel, Column, Model} from "@zhinjs/zhin";
import {DataTypes} from "sequelize";
@Model
export class Test extends BaseModel{
    @Column(DataTypes.TEXT)
    user_name:string
    @Column(DataTypes.INTEGER)
    age:number
}
  1. 更改入口,启动数据库
import {createDatabase, defineModel, useModel} from "@zhinjs/database";
import {createServer} from 'http'
import {DataTypes} from "sequelize";
// 1. 创建数据库
const db=createDatabase({
    dialect:'sqlite',
    storage:"sqlite.db",
    scan_dir:'./models'// 自动扫描指定目录下的Model
})
db.start().then(async ()=>{
    // 程序启动后,即可通过对应的model操作数据库
    const test2Table=(await useTestModel)()
    console.log(await useModel('test').findAll({
        include:test2Table
    }))
})

更多

在程序运行时,动态增加Model

import {defineModel} from "@zhinjs/database";
import {useModel} from "./database";

const useTest2Model = defineModel('test2', {
    u_name: {type: DataTypes.TEXT},// 声明test2的u_name为文本类型
    u_pass: {type: DataTypes.TEXT}
}, {
    relation: { // 关系声明 可以不传 声明 当前model与test为1对多关系,具体参考sequelize
        model: 'test',
        relate: 'belongsTo'
    }
})
const test2 = await useTest2Model() // 获取test2这个Model
const test=useModel('test') // 获取test这个Model
test2.findAll({include: test}) // 查询test2的所有结果,并关联查询出test

(注意):动态声明的表,需使用await才能正确获取,