使用prisma如何获取新创建的记录id(pk)?

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

使用 Prisma ORM 创建新记录后,如何获取新创建记录的 ID 以使用该 ID 执行其他操作?

例如,在 Laravel Eloquent 中,我可以使用

insertGetId

创建一个产品
$product_id = Product::insertGetId([
  'cat_id' => $request->cat_id,
  'name' => $request->name,
  'price' => $request->price,
  'created_at' => Carbon::now()
]);

然后使用该 ID 执行其他相关任务,例如将产品图像保存在另一个表中(使用

$product_id
):

ProductMultiImage::insert([
  'product_id' => $product_id,
  'photo_name' => $upload_path,
  'created_at' => Carbon::now(),
]);

那么当使用 Prisma 的 createMany 方法创建一些记录时,如何获取新记录 id?

export async function action({ request }) {

  const inputData = await request.formData();

  const parsedData = JSON.parse(inputData.get("data"));

  const formattedData = parsedData.map(data => ({
    discountTypeId: 1,
    discountValue: 121,
    productId: data.productId,
  }));

  await db.discountedProducts.create({
    data: [...formattedData],
  });

  // Want to do something else using the newly created discountedProducts id 

  return redirect("/app");
}

如何在 Prisma ORM 中实现类似的功能?

javascript laravel orm prisma
1个回答
0
投票

在 Prisma 中,当您使用

create
方法创建记录时,它会返回新创建的数据及其所有字段作为对象。因此,创建后您可以从那里访问新创建的记录
id

这是一个例子:

const bundle = await db.bundles.create({
  data: {
    bundleTypeId: bundleType,
    discountTypeId: discountType,
    discountValue: discountVal,
  },
});


const bundleId = bundle.id;
© www.soinside.com 2019 - 2024. All rights reserved.