node.js - sequelize
22205 ワード
sequelize
💡 概要
sequelizeは、ノードでMySQLを簡単に使用できるライブラリです.JavaScript構文をsql文に変換するために使用します.
sequelizeをインストールして実行するとconfig、modelsなどのフォルダが生成されます.
configフォルダにはmysqlに関連付けられる情報が含まれています.jsonファイルを生成します.このファイルにデータベース名、ユーザー名、passwordなどのプロパティを作成する場合はmysqlにバインドするときに使用します.
最初のインデックスはmodelsフォルダにあります.jsファイルを生成します.(後述)
使用するデータベース・テーブルに関する情報は、このモデル・フォルダに作成する必要があります.mysqlのテーブルはsequelizeのモデルに対応します.(モデルフォルダにモデルを作成)
💡 modelsフォルダ-index.jsとモデルファイル
index.jsconst Sequelize = require("sequelize");
**🔥 mysql db 연결에 필요한 정보들을 config.json 파일에서 불러온다**
const config = require("../config/config.json").development;
**🔥 models 폴더에 정의한 모델(테이블)을 불러온다**
const Info = require("./info");
**🔥 mysql sequelize 연결객체를 생성한다**
const **sequelize** = new Sequelize(config.database, config.username, config.password, config);
**🔥 db객체에 sequelize 연결객체와 모델을 등록한다**
const db = {};
db.sequelize = **sequelize**;
db.Info = Info;
**🔥 Info 모델에 sequelize 연결객체를 전달하여 init 함수를 실행한다**
Info.init(**sequelize**);
**🔥 Info 모델에 db객체를 전달하여 associate 함수를 실행한다**
Info.associate(db);
module.exports = db;
info.jsconst Sequelize = require("sequelize");
module.exports = class Info extends Sequelize.Model {
**🔥 1. init 함수 -> 테이블에 대한 설정을 한다**
static init(**sequelize**) {
return super.init(
**🔥 1번째 인수: 테이블의 컬럼에 대한 설정**
{
tokenID: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
name: {
type: Sequelize.STRING(50),
allowNull: false,
},
image: {
type: Sequelize.STRING(150),
allowNull: false,
},
},
**🔥 2번째 인수: 테이블 자체에 대한 설정**
{
**sequelize**,
timestamps: false,
underscored: false,
modelName: "NFT_info",
tableName: "nft_info",
paranoid: false,
charset: "utf8",
}
);
}
**🔥 2. associate 함수 -> 다른 모델(테이블)과의 관계를 작성**
static associate(db) {
db.Info.belongsTo(db.User, {foreignKey: 'tokenID', targetKey: 'id'})
}
};
💡 ExpressアプリケーションをsequelizeでMySQLにバインド
app.jsconst express = require("express");
**🔥 models의 index.js에서 export하는 db에 등록된 seqeulize(연결객체)를 불러온다**
const { **sequelize** } = require("./models");
const app = express();
**🔥 위에서 불러온 sequelize에 sync 메서드를 사용하여 서버 실행시 mysql과 연동되도록 만든다**
**sequelize**.sync({ force: false })
.then(() => {
console.log("db connected");
})
.catch(err => {
console.error(err);
});
app.listen(8000);
ここまでexpressとmysqlを接続するプロセスです.mysqlのdbテーブルからリソースを取得する場合は、ルータを作成してexpressアプリケーションに登録する必要があります.
ルータの作成const express = require("express");
const router = express.Router();
**🔥 자원을 가져오고자 하는 모델을 불러온다**
const Info = require("../models/info");
// server에 request가 왔을때 하는 작업들
router.get("/", async (req, res, next) => {
try {
const nfts = await Info.findAll();
console.log("hoooo");
console.log(nfts);
//res 작업을 해야 프론트에서 axios로 요청 보냈을때 얻는 response에 서버에서 보내준 정보가 담겨있다(?)
res.json({ ok: true, data: nfts });
} catch (err) {
console.error(err);
next(err);
}
});
module.exports = router;
ルータの登録const express = require("express");
const { sequelize } = require("./models");
const app = express();
sequelize
.sync({ force: false })
.then(() => {
console.log("db connected");
})
.catch(err => {
console.error(err);
});
**🔥 만든 라우터를 불러온다**
const indexRouter = require("./router");
**🔥 app에 라우터를 등록한다**
app.use("/nft", indexRouter);
app.listen(8000);
Reference
この問題について(node.js - sequelize), 我々は、より多くの情報をここで見つけました
https://velog.io/@heitzes/node.js-sequelize
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const Sequelize = require("sequelize");
**🔥 mysql db 연결에 필요한 정보들을 config.json 파일에서 불러온다**
const config = require("../config/config.json").development;
**🔥 models 폴더에 정의한 모델(테이블)을 불러온다**
const Info = require("./info");
**🔥 mysql sequelize 연결객체를 생성한다**
const **sequelize** = new Sequelize(config.database, config.username, config.password, config);
**🔥 db객체에 sequelize 연결객체와 모델을 등록한다**
const db = {};
db.sequelize = **sequelize**;
db.Info = Info;
**🔥 Info 모델에 sequelize 연결객체를 전달하여 init 함수를 실행한다**
Info.init(**sequelize**);
**🔥 Info 모델에 db객체를 전달하여 associate 함수를 실행한다**
Info.associate(db);
module.exports = db;
const Sequelize = require("sequelize");
module.exports = class Info extends Sequelize.Model {
**🔥 1. init 함수 -> 테이블에 대한 설정을 한다**
static init(**sequelize**) {
return super.init(
**🔥 1번째 인수: 테이블의 컬럼에 대한 설정**
{
tokenID: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
name: {
type: Sequelize.STRING(50),
allowNull: false,
},
image: {
type: Sequelize.STRING(150),
allowNull: false,
},
},
**🔥 2번째 인수: 테이블 자체에 대한 설정**
{
**sequelize**,
timestamps: false,
underscored: false,
modelName: "NFT_info",
tableName: "nft_info",
paranoid: false,
charset: "utf8",
}
);
}
**🔥 2. associate 함수 -> 다른 모델(테이블)과의 관계를 작성**
static associate(db) {
db.Info.belongsTo(db.User, {foreignKey: 'tokenID', targetKey: 'id'})
}
};
const express = require("express");
**🔥 models의 index.js에서 export하는 db에 등록된 seqeulize(연결객체)를 불러온다**
const { **sequelize** } = require("./models");
const app = express();
**🔥 위에서 불러온 sequelize에 sync 메서드를 사용하여 서버 실행시 mysql과 연동되도록 만든다**
**sequelize**.sync({ force: false })
.then(() => {
console.log("db connected");
})
.catch(err => {
console.error(err);
});
app.listen(8000);
const express = require("express");
const router = express.Router();
**🔥 자원을 가져오고자 하는 모델을 불러온다**
const Info = require("../models/info");
// server에 request가 왔을때 하는 작업들
router.get("/", async (req, res, next) => {
try {
const nfts = await Info.findAll();
console.log("hoooo");
console.log(nfts);
//res 작업을 해야 프론트에서 axios로 요청 보냈을때 얻는 response에 서버에서 보내준 정보가 담겨있다(?)
res.json({ ok: true, data: nfts });
} catch (err) {
console.error(err);
next(err);
}
});
module.exports = router;
const express = require("express");
const { sequelize } = require("./models");
const app = express();
sequelize
.sync({ force: false })
.then(() => {
console.log("db connected");
})
.catch(err => {
console.error(err);
});
**🔥 만든 라우터를 불러온다**
const indexRouter = require("./router");
**🔥 app에 라우터를 등록한다**
app.use("/nft", indexRouter);
app.listen(8000);
Reference
この問題について(node.js - sequelize), 我々は、より多くの情報をここで見つけました https://velog.io/@heitzes/node.js-sequelizeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol