如何将我的Next.js应用程序连接到MongoDB Compass?

iibxawm4  于 2023-10-16  发布在  Go
关注(0)|答案(1)|浏览(109)

我正在做一个名为NetMapper的Next.js项目。基本上,我正在为CLI工具nmap创建一个Web界面。我正在创建一个登录/注册表单,我需要在MongoDB Compass中存储用户。我尝试了各种各样的东西,我从youtube上看到的,但它不工作。我已经为用户创建了 SchemaModel,但我无法连接到MongoDB Compass。
我为此安装了 mongoose
我做到了:

const connectDb = async () => mongoose.connect("mongodb://localhost:27017/netmapper);

但我接下来要做什么?如何使用我创建的模型,并实际将表单中的数据插入到数据库中?

cyvaqqii

cyvaqqii1#

  • 首先,在根目录下创建一个.env.local文件,并在其中存储数据库凭据
MONGO_URI=mongodb://localhost:27017/netmapper

如果这不起作用,请将localhost替换为0.0.0.0

  • 连接到mongo
async function connectToMongo() {
    try {
         await mongoose.connect(process.env.MONGO_URI);
         console.log("Connected to MongoDB");
       } catch (error) {
         console.error("Error connecting to MongoDB:", error);
         throw error;
        }
    };
  • 创建架构
const testSchema = new Schema({
       name: String,
       email: String
    });

    const Test = models.Test|| model("Test", testSchema );
  • 接受请求并通过创建api/xyz.js文件发送响应
async function handler(req, res) {
    if (req.method === "POST") {
        const data = req.body;

        try {
            await connectToMongo();
            await Test.create(data);

            res.status(201).json({ message: "Test Inserted!" });
        } catch (error) {
            res.status(500).json({ message: "Internal Server Error" });
        }
    }
};
  • 最后发送您的表单数据
async function submitFormHandler(formData) {
    const response = await fetch("/api/xyz", {
      method: "POST",
      body: JSON.stringify(formData),
      headers: {
        "Content-Type": "application/json"
      }
    });

    const data = await response.json();
    console.log(data)
  }

相关问题