Prisma ORM 堆栈适合新的 Web 应用程序(Nextjs + Nodejs)吗

Bra*_*eVN 1 orm node.js prisma

我知道这个标题很愚蠢,但我现在真的很困惑。让我解释一下细节:

\n

我将使用 NextJS(基本上是 React)构建一个新的 Web 应用程序,并且我希望我的后端使用 GraphQL。在搜索一些附加技术时,我发现Prisma但即使阅读整个文档和网站也无法正确理解它。

\n
    \n
  1. 在传统应用程序中,我们有Frontend \xe2\x86\x92 Backend \xe2\x86\x92 Database,它们是Web应用程序的3个重要部分
  2. \n
  3. Nextjs我可以在FE中使用,在BENodejs构建,使用或作为DBGraphQL APIsMongoDBPostgresQL
  4. \n
  5. 现在我们有了Prisma。在搜索一些实验时,我的脑海中浮现出一些东西:
    \n3.1 那么Prisma就像 Nodejs 应用程序中的 LinQ 版本吗?
    \n3.2 NextJS(FE) 可以用来从DB \xe2\x86\x92Prisma查询数据BE 部分在哪里?Prisma 是否被视为 BE?\n3.3 谈论可扩展性,如果我想构建一个与 web 应用程序同步的新移动应用程序,我将没有后端重用,并且必须从头开始实现整个内容:类似+的东西,对吗?\n3.4 我还发现了一些其他示例,表明我们可以在 Nodejs 应用程序(BE)中使用来构建 API。+就足够了时,为什么我们还需要
    React NativePrisma
    PrismaPrismaNodejsMongoDB
  6. \n
\n

我对它们很困惑,所以我希望问题很清楚。

\n

air*_*eak 6

ORM 是一个对象关系映射器。这意味着您不必从头开始编写某些数据库查询

原始 mongodb 查询示例

db.mycol.findOne({title: "MongoDB Overview"})
{
    "_id" : ObjectId("5dd6542170fb13eec3963bf0"),
    "title" : "MongoDB Overview",
    "description" : "MongoDB is no SQL database",
    "by" : "tutorials point",
    "url" : "http://www.tutorialspoint.com",
    "tags" : [
        "mongodb",
        "database",
        "NoSQL"
    ],
    "likes" : 100
}
Run Code Online (Sandbox Code Playgroud)

使用 Mongoosejs 或 Prisma 等 ORM

猫鼬

let character = await Character.findOne({ name: 'Frodo' })
Run Code Online (Sandbox Code Playgroud)

棱镜

const allPosts: Post[] = await prisma.post.findMany()
Run Code Online (Sandbox Code Playgroud)

ORM 让您的生活更轻松。如果您喜欢编写原始查询,请继续:)

您可以选择的 ORM 列表

  1. https://typeorm.io/#/
  2. https://mongoosejs.com/
  3. https://www.prisma.io/
  4. https://sequelize.org/

对我来说,我个人会选择 Prisma 或 Mongoose

  1. 您可以从 Next.js 调用 Prisma,但最好从 Node.js API 调用它。如果这是一个小项目,可以继续使用 Next.js 和 Prisma
  2. 您可以使用react-native和node.js作为后端。对于 ORM 当然你可以选择上面的任何一个 ORM
  3. 当谈到可扩展性时,我认为您不应该首先考虑这一点,这更适合您的基础设施(例如AWS)。我建议您对 Next.js 使用 Vercel,对 Node.js api 使用 Heroku
  4. 您可以使用 AWS 的 RDS 来启动 PostgreSQL 或 MySQL
  5. 您可以从 mongodb atlas 启动 mongodb 数据库