reactjs POST请求是采取永远,是我的代码一团糟,还是这是正常的免费托管网站?(MERN堆栈)

4sup72z8  于 2023-01-30  发布在  React
关注(0)|答案(1)|浏览(108)

我以前的同学和我使用React、Express、Node和MongoDB创建了一个博客应用程序,后端托管在www.example.com上,前端托管在Netlify上。Render.app and the frontend is on Netlify.
我的同事写了一篇博客文章,但是现在课程和项目都结束了,我发现写一篇博客文章大约需要1分20秒,这是非常非常长的时间。
我在代码中添加了控制台时间日志,发现服务器博客控制器文件花费的时间最长。我认为代码看起来很好?我也研究了潜在的修复方法,如承诺冲突,但我不知道是什么导致了这个问题。是代码本身还是使用www.example.com的免费层的结果?Render.app's free tier?
服务器端:
型号:

const blogSchema = new mongoose.Schema(
  {
    title: { type: String, required: true },
    description: { type: String, required: true },
    content: { type: String, required: true },
    image: String,
    tags: [String],
    author: { type: mongoose.Schema.ObjectId, ref: "User" },
  },
  {
    timestamps: true,
  }
);

控制器:

async function createBlog(req, res, next) {
  let userId = req.user._id;
  try {
    const data = req.body;
    let currentUser = await User.findById(userId);
    data.author = userId;
    const newBlog = await Blog.create(data);
    currentUser.blogs.push(newBlog._id);
    await currentUser.save();
    res.json(newBlog);
  } catch (error) {
    res.status(400).json(error);
  }
}

客户端:
提交博客文章数据:

async function handleSubmit(e) {
    e.preventDefault();
    const formData = new FormData();
    Object.keys(blog).forEach((key) => {
      if (blog[key].constructor === Array) {
        blog[key].forEach((item) => {
          formData.append(key, item);
        });
      } else {
        formData.append(key, blog[key]);
      }
    });

    try {
      createABlog(formData).then((res) => {
        navigate("/");
      });
    } catch (err) {
      console.log(err.response.data);
    }
  }

发出发布请求:

export const createABlog = async (blog) => {
  try {
    const token = tokenService.getToken();
    let res = await fetch(`${BASE_URL}/api/blogs`, {
      method: "POST",
      headers: {
        Authorization: "Bearer " + token,
      },
      body: blog,
    });
    return res.json();
  } catch (error) {
    console.log(error);
  }
};

如果这是一个愚蠢的问题,或者我没有提供足够的信息,请提前道歉-我以前没有在这里发布过。任何帮助或指导,以其他资源将不胜感激!

tcomlyy6

tcomlyy61#

在我看来在1分20秒内,
甚至来自承诺的拒绝响应也将更快地到来。
我不想冒犯你,你试着做了一些事,但你做了什么?
我想,如果你从你在互联网上找到的教程中获取代码
然后用它做一个项目,有那么好吗?
人们花时间,实验,测试mongodb数据库中的代码,以获得快速响应,为什么网络游戏工作这么快?
你可以用react和javascript很快地构建一个项目,它会工作,mongodb库也会工作,
但为了更好、更快、更安全地工作,为了保留客户数据
安全,此结构不会在5分钟内创建。
要获得更快的速度,您需要深入研究一些小细节,解析并测试每个阶段的请求速度。
据我所知,在您的
数据库。
如果数据库中有,例如30,000个条目,那么使用非优化的mongodb查询,将会有延迟。
一些提示
即使在免费主机上,查询速度也相当标准。
创建索引以支持查询/
限制查询结果的数量以减少网络需求/
使用投影仅返回必要的数据/
使用递增运算符执行操作服务器端/

相关问题