From 0389d8940c294e94986a8b521907afc454cd5576 Mon Sep 17 00:00:00 2001 From: dengfuping Date: Thu, 31 Oct 2024 16:00:17 +0800 Subject: [PATCH] feat: Add sequelize sample for javascript --- javascript/sequelize/README-CN.md | 63 +++++++++++++++++++++++++++++++ javascript/sequelize/README.md | 63 +++++++++++++++++++++++++++++++ javascript/sequelize/index.js | 53 ++++++++++++++++++++++++++ javascript/sequelize/package.json | 16 ++++++++ 4 files changed, 195 insertions(+) create mode 100644 javascript/sequelize/README-CN.md create mode 100644 javascript/sequelize/README.md create mode 100644 javascript/sequelize/index.js create mode 100644 javascript/sequelize/package.json diff --git a/javascript/sequelize/README-CN.md b/javascript/sequelize/README-CN.md new file mode 100644 index 0000000..5d4ab85 --- /dev/null +++ b/javascript/sequelize/README-CN.md @@ -0,0 +1,63 @@ +# 使用 Sequelize 连接 OceanBase + +[English](README.md) | 简体中文 + +本文介绍如何通过 [Sequelize](https://sequelize.org) 连接 [OceanBase](https://www.oceanbase.com) 数据库。 + +## 准备工作 + +确保 Node.js 和 npm 已经安装。 + +## 项目使用 + +拉取项目并进入相应目录: + +```bash +git clone git@github.com: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": "alice@oceanbase.com", + "name": "Alice" + } +] +``` + +查看对应的 `users` 表,数据已正常插入: + +```bash +mysql> select * from users; ++----+---------------------+-------+ +| id | email | name | ++----+---------------------+-------+ +| 1 | alice@oceanbase.com | Alice | ++----+---------------------+-------+ +1 row in set (0.01 sec) +``` diff --git a/javascript/sequelize/README.md b/javascript/sequelize/README.md new file mode 100644 index 0000000..94522cf --- /dev/null +++ b/javascript/sequelize/README.md @@ -0,0 +1,63 @@ +# Connect to OceanBase with Sequelize + +English | [简体中文](README-CN.md) + +This document describes how to connect to [OceanBase](https://www.oceanbase.com) with [Sequelize](https://sequelize.org). + +## 准备工作 + +Make sure `Node.js` and `npm` are installed. + +## 项目使用 + +Clone the project and navigate to the appropriate directory: + +```bash +git clone git@github.com: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": "alice@oceanbase.com", + "name": "Alice" + } +] +``` + +Check the corresponding `users` table and the data has been inserted: + +```bash +mysql> select * from users; ++----+---------------------+-------+ +| id | email | name | ++----+---------------------+-------+ +| 1 | alice@oceanbase.com | Alice | ++----+---------------------+-------+ +1 row in set (0.01 sec) +``` diff --git a/javascript/sequelize/index.js b/javascript/sequelize/index.js new file mode 100644 index 0000000..a1c3dde --- /dev/null +++ b/javascript/sequelize/index.js @@ -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: "alice@oceanbase.com", + }); + 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); + }); diff --git a/javascript/sequelize/package.json b/javascript/sequelize/package.json new file mode 100644 index 0000000..16dee59 --- /dev/null +++ b/javascript/sequelize/package.json @@ -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" + } +}