我正在使用Next.js,planetscale(MySQL数据库)和Prisma ORM开发一个电子商务应用程序。
我有一个可以上传图片的表单。我将这些图片保存在Firebase存储中。作为回报,我会收到一个图片URL数组。例如,我从Firebase存储中收到的数组如下所示:
['https://firebasestorage.googleapis.com/v0/b/ishop-…=media&token=2633c821-38f3-437b-b905-2995168e3b42', 'https://firebasestorage.googleapis.com/v0/b/ishop-…=media&token=163aaf93-accc-4d64-8e27-92609c14aaaa']
现在,我想把这些图像保存在我的数据库中。我正在为我的数据库使用planetscale,并使用prisma与我的数据库交互。
我的问题是:
(1)Product
模型中urls
字段的字段类型应该是什么?下面是我的schema.json
文件:
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
relationMode = "prisma"
}
model Product {
id Int @id @default(autoincrement())
urls
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
我知道它不能是标量列表(例如String[]
),因为MySQL不支持标量列表。
我还想知道,在确定了urls
字段的字段类型之后,是否应该注意如何使用Prisma在数据库中创建记录?
下面是我的product-upload
API路径,在这里我使用Prisma客户机在数据库中创建一条记录。
import prisma from "../../lib/prisma";
export default async function handler(req, res) {
if (req.method === "POST") {
try {
const { urls } = req.body;
const product = await prisma.product.create({
data: { urls },
});
res.status(200).json(product);
} catch (error) {
res.status(500).json({ message: error.message });
}
} else {
res.setHeader("Allow", ["POST"]);
res.status(405).json({
message: `HTTP method ${req.method} is not allowed.`,
});
}
}
请注意,Product
模型将有其他字段,但首先,我想先对这个问题进行排序。
1条答案
按热度按时间pjngdqdw1#
您可以创建一个新模型来管理产品和URL之间的one-to-many relationship:
然后,要添加URL,您需要将API路由更新为如下所示: