为啥我在使用 Prisma(React 应用程序)在 Mongodb 中显示和删除时遇到问题?

Posted

技术标签:

【中文标题】为啥我在使用 Prisma(React 应用程序)在 Mongodb 中显示和删除时遇到问题?【英文标题】:Why am I having trouble displaying and deleting in Mongo using Prisma (React app)?为什么我在使用 Prisma(React 应用程序)在 Mongodb 中显示和删除时遇到问题? 【发布时间】:2021-10-22 13:55:45 【问题描述】:

我使用 Node、Express、React、Mongo 和 Prisma 在数据库中导入一个 csv 文件,在前端显示它并删除数据库中的所有记录。它适用于一条记录,因此我认为它适用于 csv 文件的其余部分(1000 条记录)。但我得到一个错误:

无效的 prisma.movi​​e.findMany() 调用: 查询执行期间发生错误: ConnectorError(ConnectorError user_facing_error: None, kind: RawError code: "unknown", message: "Command failed (CursorNotFound): cursor id 124425195753416376 not found)" ) (节点:2171) UnhandledPromiseRejectionWarning:错误: 无效的 prisma.movi​​e.deleteMany() 调用: 查询执行期间发生错误: ConnectorError(ConnectorError user_facing_error: None, kind: RawError code: "unknown", message: "Command failed (CursorNotFound): cursor id 4391617472265441923 not found)" ) 在 cb (/Users/nwsursock/Sites/test-algot/backend/node_modules/@prisma/client/runtime/index.js:36378:17) 在 runMicrotasks () 在 processTicksAndRejections (internal/process/task_queues.js:93:5) 在异步 export.deleteRequest (/Users/nwsursock/Sites/test-algot/backend/src/controllers/movie.controller.js:49:3) (节点:2171) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 `--unhandled-rejections=strict`(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:2)

我的代码相当简单。我在 REST 端点中使用 Prisma API。

const  PrismaClient  = require("@prisma/client");
const prisma = new PrismaClient();

exports.createRequest = async (req, res) => 

  const movie = req.body.movie;
  console.log("============> importing", movie);
  const data = 
    name: movie.Name,
    genre: movie.Genre,
    descr: movie.Description,
    director: movie.Director,
    actors: movie.Actors,
    year: movie.Year,
    runtime: Number(movie["Runtime (Minutes)"]),
    rating: Number(movie.Rating),
    votes: Number(movie.Votes),
    revenue: Number(movie["Revenue (Millions)"]),
    score: Number(movie.Metascore),
  ;
  const result = await prisma.movie.create( data );
  console.log("============> imported", result);

  res.status(201).json( message: "Movie correctly added!" );

;

exports.readRequest = async (req, res) => 
  try 
    const movies = await prisma.movie.findMany();
    res.status(200).json(movies);
   catch (e) 
    console.log("======> Error:", e.message);
  
;

exports.deleteRequest = async (req, res) => 
  await prisma.movie.deleteMany();
  res.status(202).json( message: "Table deleted!" );
;

【问题讨论】:

【参考方案1】:

这是版本问题。您必须降级到 Prisma 2.26。上面,出现了错误。 https://github.com/prisma/prisma/issues/8389

【讨论】:

以上是关于为啥我在使用 Prisma(React 应用程序)在 Mongodb 中显示和删除时遇到问题?的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 和 Prisma:当它们已经是 Prisma 数据库模式的一部分时,为啥要在应用程序模式中重新定义类型?

为啥在后端环境中使用 Prisma?

为啥在使用 Prisma 时需要使用 GraphQL 关系?

React:使用 API 从 Prisma 获取数据时出现未处理的错误 500

为啥 referentialIntegrity = "prisma" 不能防止迁移中的外键?

为啥我无法使用 GO 客户端在我的 prisma 查询中获取相关字段?