NodeJS 获取API非常慢(可能需要20秒才能响应),我想知道我的代码中可能有问题

taor4pac  于 2023-05-06  发布在  Node.js
关注(0)|答案(1)|浏览(216)

获取API是非常慢(也许20秒响应),但api后端并不慢,当我打开它从chrome和我看到json文件。我想知道我的代码中可能有问题
这就是我想要获取API的方式。我是否应该在其中添加更多选项以正常工作?
我的代码中缺少了什么。

const fetchPosts = async () => {
    setisLoading(true)

    try {
      localStorage.clear();

      const res = await fetch(`${process.env.BASE_URL}/posts?limit=6`
      ,
       {
        method: "GET",
         headers: { 'Cache-Control': 'no-store', "Content-Type": "application/json" } 
        
        }
       );

 localStorage.clear();
      const data = await res.json();
      setposts(data);
      // console.log(data);
    } catch (e) {
      console.error(e);
    }
    setisLoading(false);

  }
  useEffect(() => {
    localStorage.clear();

    fetchPosts();
  }, []);

public void println();我的代码,因为它不取,如果我不添加..
编辑:
这是与getposts相关的后端代码

const getPosts = async (req, res) => {
  const { userId } = req.params;
  const limitValue = req.query.limit || 500;
  const skipValue = req.query.skip  ||  0;
 
 

  const posts = await Post.find(userId ? { bookmarks: userId } : {})
    .sort({ createdAt: -1 })
    .populate("author")
    .populate("tags")
    .skip(skipValue) 
     .limit(limitValue)

  if (!posts) res.status(204).json("No posts found");
  else {
    res.status(200).json(posts.map((post) => post.toObject({ getters: true })));
  }
};

我只收集了前8个帖子。只有8个,数据库中8个帖子花了25秒。但在谷歌Chrome浏览器中,它会立即打开,但在我的React应用程序中,需要25秒才能获取

afdcj2ne

afdcj2ne1#

你必须使用分页每个请求结果包含10行以上,然后它需要时间

const limitValue = req.query.limit || 10;
 const skipValue = ((req.query.skip || 0)-1) * limitValue;

url必须像例如第一页https://api/x?limit=10&skip=1 for page 2 https://api/x?limit=10&skip=2,等等

相关问题