1. mongoose를 연결한 js에서 가져와야할 부분
goods.js
const mongoose = require("mongoose");
const GoodsSchema = new mongoose.Schema({
name: String,
thumbnailUrl: String,
category: String,
price: Number,
});
GoodsSchema.virtual("goodsId").get(function () {
return this._id.toHexString();
});
GoodsSchema.set("toJSON", {
virtuals: true,
});
module.exports = mongoose.model("Goods", GoodsSchema);
여기 mongoose에서 가져와야할 것은 name: string, thumbnailUrl, category: string, price:integer
*price에 number가 아닌 integer을 사용한 이유는 mysql에서 숫자는 integer로 가능하기 때문입니다.
cart.js
const mongoose = require("mongoose");
const CartSchema = new mongoose.Schema({
userId: String,
goodsId: String,
quantity: Number,
});
module.exports = mongoose.model("Cart", CartSchema);
cart.js도 마찬가지로 goodsId: string, quantity: integer로 가지고 오면 됩니다. 이때 userId는 별도로 설정을 할 것이기 때문에 포함시키지 않았습니다.
2. 사용자 모델 생성
models>user.js 코드
npx sequelize model:generate --name User --attributes email:string,nickname:string,password:string
models>goods.js 코드
npx sequelize model:generate --name Goods --attributes nickname:string,thumbnailUrl:string,category:string,price:integer
=> 간단하게 설명을 드리자면 name에는 Goods를 설정하게 되면 models에서 만들어질 때 goods.js로 만들어집니다. 그리고 attributes 안에 내용을 보면 mongoose에서 가져온 data를 그대로 넣게 되면 sequelize에 맞게 설정이 됩니다.
models>Cart.js 코드
npx sequelize model:generate --name Cart --attributes goodsId:string,quantity:integer
=> cart.js도 goods.js에 적용했던 방식과 동일합니다.
파일 구성

3. userId 삽입 코드
models 안에 있는 cart.js, goods.js, user.js 안에다가 userId를 다 넣기만 하면 됩니다. 즉 user.js에 셋팅된 userId를 그대로 cart.js, goods.js에 삽입하면 됩니다.
userId : {
primaryKey: true,
type: DataTypes.INTEGER,
},
migrations 안에는 create-user.js, create-goods.js, create-cart.js 안에다가 userId를 다 넣기만 하면 됩니다. 이것도 create-user.js에 셋팅된 userId를 참조하시면 됩니다.
userId: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
4. 테이블 생성하기
npx sequelize db:migrate
이 코드를 넣게 되면

database_development에 table이 생성된 것을 확인할 수 있습니다.
5. 알 수 없는 문제가 발생에 대한 대처 방법

이 문제는 token에 password가 동일하지 않아서 발생된 문제임으로 먼저
app.js 코드에서 router.post("/auth") 안에
const token = jwt.sign({ userId: user.userId }, "my-password");
"my-password"라고 되어있는 부분과 middlewares folder 안에 있는 auth-middleware.js 에서
const { userId } = jwt.verify(tokenValue, "my-password");
jwt.verify안에 있는 "my-password" 가 동일한 지 확인해야합니다. 그것만 name을 같게 한다면 알 수 없는 문제는 해결 될 것입니다.
'TIL' 카테고리의 다른 글
| 알고리즘 해설 녹화 (0) | 2021.04.05 |
|---|---|
| node 게시판 만들기2 (2021.04.01) - 정리 진행중 (0) | 2021.04.01 |
| docker 설치 방법 (0) | 2021.03.27 |
| node 게시판 만들기 정리(2021.03.25) (0) | 2021.03.25 |
| DFS 소스코드 이해(생각 정리) (0) | 2021.03.17 |