【问题标题】:mongoose/mongodb I am able to post but not get data. Only returns status code 500 without errormongoose/mongodb 我可以发布但无法获取数据。只返回状态码 500 没有错误
【发布时间】:2020-08-24 15:33:54
【问题描述】:

这是一个将 mongoose 连接到 mongodb atlas 服务器的 next.js 应用程序。我只从 fetch 调用中获得状态代码 500,但我知道我的 mongodb 地图集中有很好的数据。我使用相同的模型发布就好了。有什么想法我哪里出错了吗?

这是我的连接组件:

import mongoose from "mongoose";

const connection = {};

const dbConnect = async () => {
  if (connection.isConnected) {
    return;
  }

  const db = await mongoose.connect(process.env.mongodb.uri, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  });

  connection.isConnected = db.connections[0].readyState;
};

export default dbConnect;

我的模特:

const mongoose = require("mongoose");

const EmployeeSchema = new mongoose.Schema({
  companyId: {
    type: String,
    required: [true],
    maxlength: [200],
  },
  firstName: {
    type: String,
    required: [true, "A first name is required"],
    maxlength: [50, "First name cannot be longer than 50 characters"],
  },
  lastName: {
    type: String,
    required: [true, "A last name is required"],
    maxlength: [50, "Last name cannot be longer than 50 characters"],
  },
});

module.exports =
  mongoose.models.Employee || mongoose.model("Employee", EmployeeSchema);

最后,我的终点:

import dbConnect from "../../../utils/dbConnect";
import Employee from "../../../models/Employee";

dbConnect();

export default async (req, res) => {
  const { method } = req;

  switch (method) {
    case "GET":
      try {
        const employee = Employee.find({});
        if (!employee) {
          res.status(400).json({ success: false });
        }
        res.status(200).json({ success: true, data: employee });
      } catch (error) {
        res.status(500).json({ success: false, data: error });
      }
      break;
    case "POST":
      try {
        const employee = Employee.create(req.body);
        if (!employee) {
          res.status(400).json({ success: false });
        }
        res.status(201).json({ success: true, data: employee });
      } catch (error) {
        res.status(500).json({ success: false, data: error });
      }
      break;
    default:
      res.status(400).json({ success: false });
      break;
  }
};

【问题讨论】:

    标签: mongodb mongoose next.js


    【解决方案1】:

    原来,错误在于我的 fetch 需要等待。

    const 员工 = Employee.find({}); ----> const employee = await Employee.find({});

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2013-03-15
      • 2014-10-26
      • 2016-09-14
      • 2017-05-31
      • 2015-11-08
      • 2015-03-30
      相关资源
      最近更新 更多