それはPrisma時間です-挿入
12563 ワード
歓迎する人々
今日はデータベースにいくつかのレコードを追加する時です😁 だから時間を無駄にしないでくださいあなたの手を汚す.
では、作者を追加する簡単なインサートから始めましょう
特許を使うことによって
1つのコメントを1つの実行で挿入するにはどうすればよいのでしょうか?
さて、次のコードを次のコードに追加します
このコードを実行すると、データベースにポストとこのポストに関連するコメントを1つのコマンドで追加しました.私は、それがOrmで一般的な特徴であると私に同意すると思います.しかし、CREATEメソッドとそのパラメータを見てみましょう.
から始めましょう
しかし、この例では別の詳細を見てみましょう.あなたのポストに関連するコメントを追加するには、コードのこのスニペットを使用して
Prismaのエンティティの挿入を管理するための別のコマンドがあります
また、ある
NB CreateMany SQLiteでサポートされていない、Prismaは、そのときに、クライアントの定義を生成するのに役立ちます、それは現在のコネクタを検出し、唯一の定義は、コネクタ
最後になりますが、PrismaはタイプセーフなコンテキストでCreateメソッドを呼び出す方法を説明します.次にこのタイプのレビューを挿入する
私は、今日、あなたがPrismaで挿入物について多くの概念を持っていると思います.あなたがPrismaで挿入物の深さに入ることに興味があるならばhere 公式ドキュメントへのリンク.
それはみんなです.
次の記事では削除操作を見ます.
また近いうちに.
バイバイ👋
この記事のコードを見つけることができますhere
今日はデータベースにいくつかのレコードを追加する時です😁 だから時間を無駄にしないでくださいあなたの手を汚す.
では、作者を追加する簡単なインサートから始めましょう
src/index.ts
次の例をコピーします.import { PrismaClient } from "@prisma/client";
async function main() {
const prisma = new PrismaClient();
try {
const newAuthor = await prisma.author.create({
data: {
firstName: "John",
lastName: "Doe",
},
});
console.log({ newAuthor });
} catch (error) {
console.error(error);
throw error;
} finally {
await prisma.$disconnect();
}
}
main();
このコードでは、著者を追加する簡単な挿入を作成しました.特許を使うことによって
prisma.[entity].create
DBにエンティティを挿入できますが、次の2つのスクリプトを実行する際にこのコードを見ましょうnpx prisma db push
yarn dev
{ newAuthor: { id: 1, firstName: 'John', lastName: 'Doe' } }
あなたが見ることができるように、それは記録を挿入するのはそれほど難しくありません、しかし、それは挿入を次のレベルに取る時間です.1つのコメントを1つの実行で挿入するにはどうすればよいのでしょうか?
さて、次のコードを次のコードに追加します
console.log({ newAuthor });
....
const newPost = await prisma.post.create({
data: {
title: "First Post",
content: "This is the first post",
published: false,
comments: {
create: {
text: "First comment",
author: {
connect: {
id: newAuthor.id,
},
},
},
},
},
include: {
comments: true,
},
});
console.log("newPost", JSON.stringify(newPost, null, 4));
...
を使ってコードを実行するnpx prisma db push
yarn dev
その後、この結果を見ることができますnewPost {
"id": 7,
"title": "First Post",
"content": "This is the first post",
"published": false,
"createAt": "2021-12-18T12:29:20.982Z",
"updatedAt": "2021-12-18T12:29:20.982Z",
"comments": [
{
"id": 7,
"text": "First comment",
"postId": 7,
"authorId": 7
}
]
}
でもどうなった?このコードを実行すると、データベースにポストとこのポストに関連するコメントを1つのコマンドで追加しました.私は、それがOrmで一般的な特徴であると私に同意すると思います.しかし、CREATEメソッドとそのパラメータを見てみましょう.
から始めましょう
data
このフィールドでは、エンティティに関連するすべてのフィールドを示すことができます.前の例のコメントエンティティで行ったように、エンティティフィールドを言うときは、自分自身のフィールドを参照しています.しかし、この例では別の詳細を見てみましょう.あなたのポストに関連するコメントを追加するには、コードのこのスニペットを使用して
...
comments: {
create: {
text: "First comment",
author: {
connect: {
id: newAuthor.id,
},
},
},
},
...
我々の注意に来る最初のものは、作成フィールドです.このフィールドはコメントエンティティのフィールドではなく、prismaのコマンドです.使用create コマンドを使用すると、コメントテーブルに新しいレコードを挿入するようにすることができます.コメントに関連するデータは、説明したCreateオブジェクトの内部に表示されます.OKしかし、フィールドの著者の中に別の特徴があるこのオブジェクトを調べましょう.内部に見ることができるようにconnect
, でもなんだろう?The connect フィールドはPrismaの別のコマンドです.このコマンドは、著者のレコードが既にデータベースに存在し、それを作成してはいけませんが、コメントレコードと著者レコードの間のリンクを作成するだけであることを示します.Prismaのエンティティの挿入を管理するための別のコマンドがあります
connectOrCreate
. このコマンドは、相対レコードが存在しているかどうかを確認することができます.この場合、Prismaはエンティティ間のリンクを作成します.そうでなければPrismaはこの新しいレコードを作成します.例をあげるために、著者はコマンドの書き換えをconnectOrCreate
.author: {
connectOrCreate: {
create: {
lastName: "Last name",
firstName: "First name",
},
where: {
id: newAuthor.id,
},
},
},
新しいレコードを挿入すると、データベース内のすべてのCRUD操作がトランザクションの下で行われますので、挿入時に3つのサブエンティティを持つエンティティがある場合は、すべての操作が成功した場合のみ成功結果を取得します.そうでないとエラーが発生し、データベースが実行前にクリーンになります.また、ある
createMany
コレクション内のバルクインサートを行う方法.それは、それとそれほど異なりませんcreate
メソッド.ドキュメントへのリンクを残しますhere .NB CreateMany SQLiteでサポートされていない、Prismaは、そのときに、クライアントの定義を生成するのに役立ちます、それは現在のコネクタを検出し、唯一の定義は、コネクタ
最後になりますが、PrismaはタイプセーフなコンテキストでCreateメソッドを呼び出す方法を説明します.次にこのタイプのレビューを挿入する
import { Prisma, PrismaClient } from "@prisma/client";
...
const authorCreate: Prisma.AuthorCreateArgs = {
data: {
firstName: "John",
lastName: "Doe",
},
};
const newAuthor = await prisma.author.create(authorCreate);
...
Prismaは、この作業をあなたがprisma.schema
ファイルとそれはちょうどこれを作りません、しかし、我々は次の記事でこれに深く行きます.私は、今日、あなたがPrismaで挿入物について多くの概念を持っていると思います.あなたがPrismaで挿入物の深さに入ることに興味があるならばhere 公式ドキュメントへのリンク.
それはみんなです.
次の記事では削除操作を見ます.
また近いうちに.
バイバイ👋
この記事のコードを見つけることができますhere
Reference
この問題について(それはPrisma時間です-挿入), 我々は、より多くの情報をここで見つけました https://dev.to/this-is-learning/its-prisma-time-insert-fc2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol