为啥我在使用 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.movie.findMany() 调用: 查询执行期间发生错误: ConnectorError(ConnectorError user_facing_error: None, kind: RawError code: "unknown", message: "Command failed (CursorNotFound): cursor id 124425195753416376 not found)" ) (节点:2171) UnhandledPromiseRejectionWarning:错误: 无效的 prisma.movie.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 时需要使用 GraphQL 关系?
React:使用 API 从 Prisma 获取数据时出现未处理的错误 500