簡體   English   中英

如何調用從 MongoDB 獲取數據的 NextJs api?

[英]How to call NextJs api that fetch data from MongoDB?

我創建了一個從 MongoDb 獲取數據的產品api。

import dbConnect from "../../../lib/mongodb";
import Products from "../../../models/Products";

export default async function handler(req, res) {
  const { method } = req;
  dbConnect();
  if (method === "GET") {
    try {
      const products = await Products.find();
      res.status(200).json(products);
    } catch (err) {
      res.status(500).json(err);
    }
  }

  if (method === "POST") {
    try {
      const product = await Products.create(req.body);
      res.status(201).json(product);
    } catch (err) {
      res.status(500).json(err);
    }
  }
}

我已成功連接到數據庫並在 localhost 中獲取數據。但是當我在 vercel 上部署它時,出現500 Internal Error 我在react-admin dataProvider.js中使用這個 api 就像那樣

import { fetchUtils } from "react-admin";

import { stringify } from "query-string";
const httpClient = fetchUtils.fetchJson;

const dataProvider = {
  getList: (resource, params) => {
    const { page, perPage } = params.pagination;
    const query = {
      range: JSON.stringify([(page - 1) * perPage, page * perPage - 1]),
    };
    const url = `/api/${resource}?${stringify(
      query
    )}`;  //here the API that I call

    return httpClient(url).then(({ headers, json }) => ({
      data: json.map((resource) => ({ ...resource, id: resource._id })),
      total: parseInt(headers.get("content-range").split("/").pop(), 10),
    }));
  },
};

export default dataProvider;

這里是開發者工具中網絡的截圖

在本地在此處輸入圖像描述 生產中在此處輸入圖像描述

我想分享我的域名鏈接https://electronic-products47.vercel.app/

我認為,在 Monge DB 網絡訪問中,您需要將 0.0.0.0/0 IP 添加到“白名單”,以便您的 Vercel 服務器不會被 Mongo DB 數據庫阻止。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM