iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
SideProject30

Electron Angular軟體架構與簡易功能實作學習路程實記系列 第 4

Day 4 - 後端環境架構(typeorm + sqlite3) - 2

  • 分享至 

  • xImage
  •  

TypeORM + SQLite3

TypeORM 是一個用於 TypeScript 和 JavaScript 的 ORM (Object-Relational Mapping) 框架,用於開發後端應用程序的數據庫交互。它提供了一個強大的物件關聯映射器,使開發者能夠以面向對象的方式操作數據庫。

物件關聯映射 (Object-Relational Mapping, ORM) 是一種技術,用於在關係型數據庫和物件導向編程語言之間建立映射。通過使用 ORM,開發者可以使用物件和類的概念來操作數據庫,而無需直接處理 SQL 查詢。

TypeORM 提供了許多方便的功能,例如對象的創建、更新和刪除,以及對象之間的關聯。它支持多種數據庫,包括 SQLite3,這使得開發者可以根據自己的需求選擇最適合的數據庫。

而SQLite3 是一個嵌入式的關聯式數據庫管理系統,它是一個輕量級、自包含且無需服務器的數據庫引擎。它的特點是占用資源少,適用於一些資源有限的環境,如移動設備和嵌入式系統。它可以直接將數據庫存儲在應用程序的本地文件中,而不需要單獨的服務器進程。這使得它非常適合在本地應用程序中使用,如行動應用程序和桌面應用程序。

總結來說,SQLite3 是一個輕量級、高效和易於使用的嵌入式關聯式數據庫引擎,它與 TypeORM 框架搭配使用,可以為開發者提供便捷的數據庫交互方式。

套件安裝

npm install typeorm --save
npm install reflect-metadata --save
npm install better-sqlite3
npm install node-gyp

npm install @types/node --save-dev
npm install @electron/rebuild --save-dev

建立Entity物件

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number | undefined

  @Column()
  Name: string | undefined

  @Column()
  description: number | undefined
}

建立資料庫存取

export class UserDao {
  dataSource: DataSource;
  sqlDataBase: SqlDataBase;
  constructor() {
    this.sqlDataBase = new SqlDataBase();
    this.dataSource = this.sqlDataBase.dataSource;
  }
  async findUser(id: number) {
    return await this.dataSource.manager.findBy(User, { id: id });
  }
  async saveUser(user: any) {
    return await this.dataSource.manager.save(User, user);
  }

  async deleteUser(name:string) {
    return await this.dataSource.createQueryBuilder().delete()
      .from(User)
      .where("name = :name", { name: name })
      .execute();
  }
}

建立Api介面

apiServer.get('/User/:id', (req, res) => {
  let id = req.params["id"] ? parseInt(req.params["id"]) : 0;
  console.log(id);
  userDao.findUser(id).then((data: any) => {
    res.send(data);
  });
});

apiServer.post('/UserSave', (req, res) => {
  console.log(req.body);
  userDao.saveUser(req.body).then((data: any) => {
    res.status(200).send({status:"user save OK"});
  });
});

apiServer.delete('/UserDelete/:name', (req, res) => {
  let name = req.params["name"];
  console.log(name);
  userDao.deleteUser(name).then((data: any) => {
    res.status(200).send({status:"sqlite delete OK"});
  });
});

完成Api測試

https://ithelp.ithome.com.tw/upload/images/20230919/20124238M3rK7Gozkp.png

小結

本次完成localDB串接,先完成簡單範例User資料新增搜尋刪除確認流程,後續在研讀Typescript將架構完整.


上一篇
Day 3 - 後端環境架構(Express) - 1
下一篇
Day 5- 後端環境架構(NeDB) - 3
系列文
Electron Angular軟體架構與簡易功能實作學習路程實記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言