您的位置:首页 > 游戏 > 游戏 > 一般通过yyut_建筑装修装饰工程资质_sem和seo的区别_seo视频

一般通过yyut_建筑装修装饰工程资质_sem和seo的区别_seo视频

2024/11/20 1:25:28 来源:https://blog.csdn.net/YUELEI118/article/details/143055795  浏览:    关键词:一般通过yyut_建筑装修装饰工程资质_sem和seo的区别_seo视频
一般通过yyut_建筑装修装饰工程资质_sem和seo的区别_seo视频

1. 新增数据

在 Prisma 中,新增数据是一个常见的操作,可以通过 create 和 createMany 方法来实现。这两个方法分别用于创建单个记录和多个记录。下面详细介绍这两个方法及其配置项。

1. create 方法

create 方法用于在数据库中创建单个记录。你可以指定要插入的数据,并且可以选择返回关联的数据。

  1. 基本语法
const newUser = await prisma.user.create({data: {name: 'John Doe',email: 'john.doe@example.com',age: 25,},
});
  1. 配置项
  • data:指定要插入的数据,可以包含多个字段。
  • select(可选):指定返回的数据字段。
  • include(可选):指定返回的关联数据。
  1. 示例
    假设你有一个 User 模型,包含以下字段:id、name、email、age。
  • 创建单个记录
const newUser = await prisma.user.create({data: {name: 'John Doe',email: 'john.doe@example.com',age: 25,},
});console.log(newUser);
  • 创建记录并返回特定字段
const newUser = await prisma.user.create({data: {name: 'John Doe',email: 'john.doe@example.com',age: 25,},select: {id: true,name: true,email: true,},
});console.log(newUser);
  • 创建记录并返回关联数据
    假设 User 模型有一个关联的 Post 模型:
const newUserWithPosts = await prisma.user.create({data: {name: 'John Doe',email: 'john.doe@example.com',age: 25,posts: {create: [{title: 'My First Post',content: 'This is my first post.',},],},},include: {posts: true,},
});console.log(newUserWithPosts);

2. createMany 方法

createMany 方法用于在数据库中创建多个记录。你可以一次性插入多条记录,提高性能。

  1. 基本语法
const createdUsers = await prisma.user.createMany({data: [{name: 'John Doe',email: 'john.doe@example.com',age: 25,},{name: 'Jane Smith',email: 'jane.smith@example.com',age: 30,},],
});
  1. 配置项
  • data:指定要插入的数据数组,每个元素是一个对象,包含要插入的字段和值。

  • skipDuplicates(可选):布尔值,表示是否跳过重复的记录(默认为 false)。

  • 示例
    假设你有一个 User 模型,包含以下字段:id、name、email、age。

  • 创建多个记录

const createdUsers = await prisma.user.createMany({data: [{name: 'John Doe',email: 'john.doe@example.com',age: 25,},{name: 'Jane Smith',email: 'jane.smith@example.com',age: 30,},],
});console.log(createdUsers);
  • 创建多个记录并跳过重复记录
const createdUsers = await prisma.user.createMany({data: [{name: 'John Doe',email: 'john.doe@example.com',age: 25,},{name: 'Jane Smith',email: 'jane.smith@example.com',age: 30,},],skipDuplicates: true,
});console.log(createdUsers);

3. 返回值

  • create 方法会返回新创建的记录对象。
  • createMany 方法会返回一个对象,包含插入的记录数量。
  1. create 方法的返回值
const newUser = await prisma.user.create({data: {name: 'John Doe',email: 'john.doe@example.com',age: 25,},
});console.log(newUser);
// 输出:
// {
//   id: 1,
//   name: 'John Doe',
//   email: 'john.doe@example.com',
//   age: 25
// }
  1. createMany 方法的返回值
const createdUsers = await prisma.user.createMany({data: [{name: 'John Doe',email: 'john.doe@example.com',age: 25,},{name: 'Jane Smith',email: 'jane.smith@example.com',age: 30,},],
});console.log(createdUsers);
// 输出:
// {
//   count: 2 // 插入了2条记录
// }

4. 处理创建失败的情况

在创建记录时,可能会遇到一些错误,例如唯一约束冲突或数据库连接问题。你可以使用 try-catch 块来捕获和处理这些错误。

  • 示例
try {const newUser = await prisma.user.create({data: {name: 'John Doe',email: 'john.doe@example.com',age: 25,},});console.log('User created successfully:', newUser);
} catch (error) {if (error instanceof Prisma.PrismaClientKnownRequestError) {if (error.code === 'P2002') {console.error('Unique constraint violation:', error.meta.target);} else {console.error('An unexpected error occurred:', error);}} else {console.error('An unexpected error occurred:', error);}
}

5. 总结

  • create:用于创建单个记录。
  • createMany:用于创建多个记录。
  • data:指定要插入的数据,可以包含多个字段。
  • select(可选):指定返回的数据字段。
  • include(可选):指定返回的关联数据。
  • skipDuplicates(可选):在 createMany 中,表示是否跳过重复的记录。
  • 返回值:create 方法返回新创建的记录对象,createMany 方法返回一个包含插入记录数量的对象。
  • 错误处理:使用 try-catch 块捕获和处理创建过程中可能出现的错误。

2. 更新数据

1. update 方法

update 方法用于更新数据库中的单个记录。你需要提供一个唯一的标识符(通常是主键)来指定要更新的记录,以及要更新的数据。

  1. 基本语法
const updatedUser = await prisma.user.update({where: {id: 1, // 唯一标识符,用于找到要更新的记录},data: {name: 'Updated Name', // 要更新的字段和值age: 30,},
});
  1. 配置项
    • where:指定要更新的记录的唯一标识符。通常是一个对象,包含主键或其他唯一字段。
    • data:指定要更新的字段和对应的值。可以包含多个字段。
  2. 示例
    假设你有一个 User 模型,包含以下字段:id、name、email、age。
  • 更新单个字段
const updatedUser = await prisma.user.update({where: {id: 1,},data: {name: 'Updated Name',},
});console.log(updatedUser);
  • 更新多个字段
const updatedUser = await prisma.user.update({where: {id: 1,},data: {name: 'Updated Name',age: 30,},
});console.log(updatedUser);

2. upsert 方法

upsert 方法用于“更新或插入”操作。如果记录存在,则更新记录;如果记录不存在,则插入新记录。这对于处理不确定记录是否存在的情况非常有用。

  1. 基本语法
const updatedOrCreatedUser = await prisma.user.upsert({where: {email: 'john.doe@example.com', // 唯一标识符,用于找到要更新的记录},update: {name: 'Updated Name', // 如果记录存在,要更新的字段和值},create: {name: 'New User', // 如果记录不存在,要插入的新记录的数据email: 'john.doe@example.com',age: 25,},
});
  1. 配置项

    • where:指定要查找的记录的唯一标识符。通常是一个对象,包含主键或其他唯一字段。
    • update:如果记录存在,指定要更新的字段和对应的值。
    • create:如果记录不存在,指定要插入的新记录的数据。
  2. 示例
    假设你有一个 User 模型,包含以下字段:id、name、email、age。

  3. 更新或插入记录

const updatedOrCreatedUser = await prisma.user.upsert({where: {email: 'john.doe@example.com',},update: {name: 'Updated Name',},create: {name: 'New User',email: 'john.doe@example.com',age: 25,},
});console.log(updatedOrCreatedUser);

3. 返回值

  • update 和 upsert 方法都会返回更新后的记录对象。
  • 如果使用 select 或 include 配置项,可以控制返回的数据字段。
  1. 使用 select 控制返回字段
const updatedUser = await prisma.user.update({where: {id: 1,},data: {name: 'Updated Name',},select: {id: true,name: true,email: true,},
});console.log(updatedUser);
  1. 使用 include 控制返回关联数据
const updatedUserWithPosts = await prisma.user.update({where: {id: 1,},data: {name: 'Updated Name',},include: {posts: true,},
});console.log(updatedUserWithPosts);

4. 总结

  • update:用于更新已存在的记录。
  • upsert:用于更新已存在的记录或插入新记录。
  • where:指定要更新的记录的唯一标识符。
  • data:指定要更新的字段和值。
  • update:在 upsert 中,如果记录存在,指定要更新的字段和值。
  • create:在 upsert 中,如果记录不存在,指定要插入的新记录的数据。
  • select 和 include:用于控制返回的数据字段和关联数据。

3. 删除数据

在 Prisma 中,删除数据是一个常见的操作,可以通过 delete 和 deleteMany 方法来实现。这两个方法分别用于删除单个记录和多个记录。下面详细介绍这两个方法及其配置项。

1. delete 方法

delete 方法用于删除数据库中的单个记录。你需要提供一个唯一的标识符(通常是主键)来指定要删除的记录。

  1. 基本语法
const deletedUser = await prisma.user.delete({where: {id: 1, // 唯一标识符,用于找到要删除的记录},
});
  1. 配置项
    • where:指定要删除的记录的唯一标识符。通常是一个对象,包含主键或其他唯一字段。
  2. 示例
    假设你有一个 User 模型,包含以下字段:id、name、email、age。
  • 删除单个记录
const deletedUser = await prisma.user.delete({where: {id: 1,},
});console.log(deletedUser);

2. deleteMany 方法

deleteMany 方法用于删除数据库中的多个记录。你需要提供一个过滤条件来指定要删除的记录集合。

  1. 基本语法
const deletedUsers = await prisma.user.deleteMany({where: {age: {gt: 30, // 删除年龄大于30的用户},},
});
  1. 配置项
  • where:指定要删除的记录的过滤条件。可以包含多个条件组合。
  1. 示例
    假设你有一个 User 模型,包含以下字段:id、name、email、age。
  • 删除多个记录
const deletedUsers = await prisma.user.deleteMany({where: {age: {gt: 30, // 删除年龄大于30的用户},},
});console.log(deletedUsers);

3. 返回值

  • delete 方法会返回被删除的记录对象。

  • deleteMany 方法会返回一个对象,包含删除的记录数量。

  • delete 方法的返回值

const deletedUser = await prisma.user.delete({where: {id: 1,},
});console.log(deletedUser);
// 输出:
// {
//   id: 1,
//   name: 'John Doe',
//   email: 'john.doe@example.com',
//   age: 25
// }
  • deleteMany 方法的返回值
const deletedUsers = await prisma.user.deleteMany({where: {age: {gt: 30,},},
});console.log(deletedUsers);
// 输出:
// {
//   count: 5 // 删除了5条记录
// }

4. 处理删除失败的情况

在删除记录时,可能会遇到一些错误,例如记录不存在或数据库连接问题。你可以使用 try-catch 块来捕获和处理这些错误。

  • 示例
try {const deletedUser = await prisma.user.delete({where: {id: 1,},});console.log('User deleted successfully:', deletedUser);
} catch (error) {if (error instanceof Prisma.PrismaClientKnownRequestError) {if (error.code === 'P2025') {console.error('Record to delete does not exist:', error.meta.target);} else {console.error('An unexpected error occurred:', error);}} else {console.error('An unexpected error occurred:', error);}
}

5. 删除关联数据

在删除记录时,你可能需要同时删除关联的记录。这可以通过在模型定义中设置外键约束来实现。例如,假设 User 模型有一个关联的 Post 模型,你可以设置级联删除。

  • 模型定义(prisma)
model User {id    Int     @id @default(autoincrement())name  Stringemail String  @uniqueage   Intposts Post[]
}model Post {id      Int     @id @default(autoincrement())title   Stringcontent Stringauthor  User    @relation(fields: [authorId], references: [id], onDelete: Cascade)authorId Int
}
  • 在这个例子中,onDelete: Cascade 表示当删除一个 User 记录时,所有关联的 Post 记录也会被删除。

6. 总结

  • delete:用于删除单个记录。
  • deleteMany:用于删除多个记录。
  • where:指定要删除的记录的唯一标识符或过滤条件。
  • 返回值:delete 方法返回被删除的记录对象,deleteMany 方法返回一个包含删除记录数量的对象。
  • 错误处理:使用 try-catch 块捕获和处理删除过程中可能出现的错误。
  • 级联删除:通过在模型定义中设置外键约束,实现删除记录时自动删除关联的记录。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com