NEXTでMongoDBとMongosを使いましょう初期設定(最初の設定から最初の保存まで)
ローカル:
mongodb://localhost:ポート番号/データベース名
ex)
mongodb://localhost:27017/test
atlasパス:
DB CONN STR=mongodb+srv://アイデンティティ:パスワード@クラスタ0.自分の住所.mongodb.Net/データベース名?retryWrites=true&w=majority
Atlasでも多くの作業が行われているが,ローカルdbは容易に動作するため,開発環境では通常ローカルdbが用いられる.
netxtでは多くの方法が使用できます.
私の場合は以下の通りです.
ミドルウェアフォルダの作成
db.js,
index.jsファイルの作成
db.js
user.js(テストファイルなので、モデルと実際に格納されている部分を完全に縮小してテストします.)
mongodb://localhost:ポート番号/データベース名
ex)
mongodb://localhost:27017/test
atlasパス:
DB CONN STR=mongodb+srv://アイデンティティ:パスワード@クラスタ0.自分の住所.mongodb.Net/データベース名?retryWrites=true&w=majority
Atlasでも多くの作業が行われているが,ローカルdbは容易に動作するため,開発環境では通常ローカルdbが用いられる.
netxtでは多くの方法が使用できます.
私の場合は以下の通りです.
yarn add mongoose
apiフォルダ内ミドルウェアフォルダの作成
db.js,
index.jsファイルの作成
db.js
import mongoose from "mongoose";
export async function dbConnect() {
if (mongoose.connection.readyState >= 1) return;
return mongoose.connect(process.env.DB_CONN_STR);
}
export function jsonify(obj) {
return JSON.parse(JSON.stringify(obj));
}
export default async function dbMiddleware(req, res, next) {
try {
if (!global.mongoose) {
global.mongoose == dbConnect();
}
} catch (e) {
console.error(e);
}
return next();
}
index.jsimport dbMiddleware from "./db";
import nextConnect from "next-connect";
export default function createHandler(...middlewares) {
return nextConnect().use(dbMiddleware, ...middlewares);
}
api/modelsフォルダuser.js(テストファイルなので、モデルと実際に格納されている部分を完全に縮小してテストします.)
import mongoose, { Schema } from "mongoose";
const MODEL_NAME = "User";
const schema = new Schema(
{
name: String,
password : String
},
{
timestamps: true,
}
);
export default mongoose.models[MODEL_NAME] ||
mongoose.model(MODEL_NAME, schema, "users");
api/user/index.jsimport createHandler from "../middleware";
import User from "../models/user";
const app = createHandler();
app.get(async (req, res) => {
const users = await User.find({});
return res.status(200).json({ data: users });
});
app.post(async (req, res) => {
var users = new User(req.body);
try {
const result = await users.save();
return res.status(200).json(result);
} catch (error) {
...
}
});
export default app;
pages/test.jsimport axios from "axios";
import React from "react";
export default function test() {
const variables = { name: "테스터", password: "123" };
const saveBtn = () => {
axios.post("/api/user", variables).then(function (resp) {
console.log(resp);
});
};
return (
<div>
<button onClick={saveBtn}>저장 테스트</button>
</div>
);
}
初期設定が終了します.Reference
この問題について(NEXTでMongoDBとMongosを使いましょう初期設定(最初の設定から最初の保存まで)), 我々は、より多くの情報をここで見つけました https://velog.io/@familyman80/몽고DB-로컬-ATLAS-경로テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol