nodejs질문이지만 nodejs관련 카테고리와 테그가 없어서 JavaScript 카테고리에 글을 남깁니다.
우선 저는 mongodb 컴퍼스를 사용해서 nodejs라는 데이터베이스를 만들고 products라는 컬렉션을 만든 후 그곳에 제가 프로젝트에 사용할 상품 데이터 등을 넣어두었습니다.
그런 다음 제 개인 프로젝트 폴더에 schema라는 폴더를 만든 후 몽구스라는 모듈을 사용해서 제 프로젝트와 몽고디비를 연결 시켰습니다.
const mongoose = require("mongoose");
const dotenv = require("dotenv");
dotenv.config();
const connect = async () => {
try {
if (process.env.NODE_ENV !== "production") {
mongoose.set("debug", true);
}
await mongoose.connect(
`mongodb://${process.env.NAME}:${process.env.PASSWORD}@localhost:27017/admin`
);
console.log("몽고디비 연결 성공");
} catch (err) {
console.error("몽고디비 연결 실패", err);
console.log("제 연결을 시도하겠습니다.");
connect();
}
};
module.exports = connect;
“몽고디비 연결 성공” 이라는 문자열이 출력되면서 몽고디비가 잘 연결되었다는 점을 인지하고 products 모델을 만들었습니다.
const mongoose = require("mongoose");
const { Schema } = mongoose;
const productSchema = new Schema({
name: {
type: String,
required: true,
unique: true,
},
price: {
type: Number,
required: true,
unique: true,
},
origin: {
type: String,
required: true,
unique: true,
},
type: {
type: String,
required: true,
unique: true,
},
});
module.exports = mongoose.model("Product", productSchema);
그리고 웹페이지에 정보를 표시하기 위해 routes 폴더에 상품 정보를 띄울 코드를 만들고 만든 라우터를 app.js에 미들웨어로 등록했습니다.
products.js
const express = require("express");
const Product = require("../schema/product");
const router = express.Router();
router.get("/", async (req, res, next) => {
try {
const products = await Product.find({});
console.log(products);
res.json(products);
} catch (err) {
console.error(err);
next(err);
}
});
module.exports = router;
app.js
const express = require("express");
const cors = require("cors");
const morgan = require("morgan");
const app = express();
const connect = require("./schema");
const indexRouter = require("./routes");
const productRouter = require("./routes/products");
app.set("port", process.env.PORT || 8080);
connect();
app.use(cors());
app.use(morgan("dev"));
app.use("/", indexRouter);
app.use("/products", productRouter);
app.listen(app.get("port"), () => {
console.log(`http://localhost:${app.get("port")}`);
});
여기까지 완성 한 후 서버를 실행 한 후 /products 폴더에 가면 빈 배열 ''이거 하나만 보이게 됩니다.
제가 작성한 스키마 혹은 라우터 둘 중에 어떤것이 잘못이 된건지 잘 모르겠습니다.