Prisma Mongodb 无法创建用户模型

问题描述 投票:0回答:4

所以我第一次使用 Prisma,我的提供商是

mongodb
,当我想创建模型时,它向我抛出一个错误

Invalid `prisma.user.create()` invocation:


  Prisma needs to perform transactions, which requires your MongoDB server to be run 
as a replica set. https://pris.ly/d/mongodb-replica-set

我在 nextjs 应用程序中使用 Prisma,并将代码放在 API 页面中

我的 DATABASE_URL 是

mongodb://localhost:27017/threadzees

代码:

await prisma.user.create({
      data: {
        username,
        email,
        avatar: "1",
        createdAt: new Date(),
      },
    });

如何解决这个问题?

mongodb next.js prisma
4个回答
5
投票

我正在运行 Mongodb 4+ 版本我解决了它如下 正如错误所描述的,您需要创建一个副本。您可以使用基于云的 Mongo,也可以在本地创建一个副本,如下所示。

# Open new terminal execute below command
 mongod --port=27001 --dbpath=. --replSet=rs0
# Open another terminal window execute below command
mongo.exe
# Then below command
rs.initiate( {    _id : "rs0", members: [ { _id: 0, host: "localhost:27001" } ] })
# your new connection String
mongodb://localhost:27001
  1. --dbpath : 是你的数据路径目录(上面的命令指向当前目录)
  2. --replSet=rs0 : 副本名称
  3. 阅读更多内容@https://www.mongodb.com/docs/manual/tutorial/deploy-replica-set/

快乐编码:)


2
投票

如果您使用本地 mongodb 服务,请找到 mongod.cfg 文件(通常位于

Program File\MongoDB\Server\[version number]\bin
中)并将其配置为使用副本集。添加以下行:

replication:
   replSetName: rs0

然后从终端启动

mongosh
并使用
rs.initiate()
启动副本集服务器。您的代码现在应该可以正常工作了。


0
投票

您可以使用 "prisma": "2.26.0" 和 "@prisma/client": "2.26.0" 代替当前版本。他们不需要副本集。 此外,对于这个旧版本,您还必须使用 @default(db generated()) 而不是 @default(auto()) ,两者都带有“npx [email protected]generate”。


0
投票

只需将 localhost 替换为 127.0.0.1

mongodb://127.0.0.1:27017/threadzees

© www.soinside.com 2019 - 2024. All rights reserved.