Skip to content

Commit

Permalink
feat: Add sequelize sample for javascript
Browse files Browse the repository at this point in the history
  • Loading branch information
dengfuping committed Oct 31, 2024
1 parent beeb74f commit c2a4cc8
Show file tree
Hide file tree
Showing 5 changed files with 208 additions and 1 deletion.
14 changes: 13 additions & 1 deletion .github/workflows/javascript.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:
- 'javascript/**'

jobs:
ci:
mysql2:
strategy:
matrix:
module:
Expand All @@ -22,3 +22,15 @@ jobs:
language: 'javascript'
module: ${{ matrix.module.name }}
with_oceanbase_container: ${{ matrix.module.with_oceanbase_container }}

sequelize:
strategy:
matrix:
module:
- name: 'sequelize'
with_oceanbase_container: true
uses: ./.github/workflows/basic-workflow.yml
with:
language: 'javascript'
module: ${{ matrix.module.name }}
with_oceanbase_container: ${{ matrix.module.with_oceanbase_container }}
63 changes: 63 additions & 0 deletions javascript/sequelize/README-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# 使用 Sequelize 连接 OceanBase

[English](README.md) | 简体中文

本文介绍如何通过 Sequelize 连接 OceanBase 数据库。

## 准备工作

确保 Node.js 和 npm 已经安装。

## 项目使用

拉取项目并进入相应目录:

```bash
git clone [email protected]:oceanbase/ob-samples.git
cd javascript/sequelize
```

安装依赖:

```bash
npm install
```

修改 `index.js` 中的数据库连接串:

```javascript
const sequelize = new Sequelize("mysql://root:@127.0.0.1:2881/test", {
dialect: "mysql",
logging: false,
});
```

执行 `index.js` 中的示例代码:

```bash
node index.js
```

输出以下内容,说明执行成功:

```bash
[
{
"id": 1,
"email": "[email protected]",
"name": "Alice"
}
]
```

查看对应的 `users` 表,数据已正常插入:

```bash
mysql> select * from users;
+----+-----------------+-------+
| id | email | name |
+----+-----------------+-------+
| 1 | [email protected] | Alice |
+----+-----------------+-------+
1 row in set (0.02 sec)
```
63 changes: 63 additions & 0 deletions javascript/sequelize/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Connect to OceanBase with Sequelize

English | [简体中文](README-CN.md)

This document describes how to connect to OceanBase with Sequelize.

## 准备工作

Make sure `Node.js` and `npm` are installed.

## 项目使用

Clone the project and navigate to the appropriate directory:

```bash
git clone [email protected]:oceanbase/ob-samples.git
cd javascript/sequelize
```

Install dependencies:

```bash
npm install
```

Modify the connection string in the `index.js` file:

```javascript
const sequelize = new Sequelize("mysql://root:@127.0.0.1:2881/test", {
dialect: "mysql",
logging: false,
});
```

Execute `index.js`:

```bash
node index.js
```

The output should be as follows, indicating successful execution:

```bash
[
{
"id": 1,
"email": "[email protected]",
"name": "Alice"
}
]
```

Check the corresponding `users` table and the data has been inserted:

```bash
mysql> select * from users;
+----+-----------------+-------+
| id | email | name |
+----+-----------------+-------+
| 1 | [email protected] | Alice |
+----+-----------------+-------+
1 row in set (0.02 sec)
```
53 changes: 53 additions & 0 deletions javascript/sequelize/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
const { Sequelize, DataTypes } = require("sequelize");

const sequelize = new Sequelize("mysql://root:@127.0.0.1:2881/test", {
dialect: "mysql",
logging: false,
});

const UserModel = sequelize.define(
"users",
{
id: {
field: "id",
type: DataTypes.BIGINT,
autoIncrement: true,
primaryKey: true,
allowNull: false,
},
email: {
field: "email",
type: DataTypes.STRING,
unique: true,
allowNull: false,
},
name: {
field: "name",
type: DataTypes.STRING,
allowNull: false,
},
},
{
timestamps: false,
}
);

async function main() {
await UserModel.sync();
await UserModel.create({
name: "Alice",
email: "[email protected]",
});
const allUsers = await UserModel.findAll();
console.log(JSON.stringify(allUsers, null, 2));
}

main()
.then(async () => {
await sequelize.close();
})
.catch(async (e) => {
console.error(e);
await sequelize.close();
process.exit(1);
});
16 changes: 16 additions & 0 deletions javascript/sequelize/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "sequelize",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"mysql2": "^3.11.3",
"sequelize": "^6.37.5"
}
}

0 comments on commit c2a4cc8

Please sign in to comment.