🙈
Next.js + PrismaでDatetime型をwhereする
基本的にはこれでOK。
const data = await prisma.post.findMany({
where: {
createdAt: {
gte: new Date('2022-01-01'),
lt: new Date('2022-01-02'),
},
},
})
こちらのIssueにもありますが、ISOフォーマットの日付のみサポートしているみたいです。
dey.jsでやるならこんな感じですかね。
const now = dayjs()
const data = await prisma.post.findMany({
where: {
createdAt: {
gte: now.startOf('month').toISOString(),
lt: now.endOf('month').toISOString(),
},
},
})
あと、Next.jsでgetServerSideProps
とかで値を取得してPropsとして渡そうとしている場合は、以下のように、JSONにシリアライズできるデータを返してくださいと怒られます。
`object` ("[object Date]") cannot be serialized as JSON. Please only return JSON serializable data types.
なので、こんな感じで一旦Parseしてreturnしてあげるとうまくいきます。
export const getServerSideProps: GetServerSideProps = async () => {
const now = dayjs()
const data = await prisma.post.findMany({
where: {
createdAt: {
gte: now.startOf('month').toISOString(),
lt: now.endOf('month').toISOString(),
},
},
})
const posts = JSON.parse(JSON.stringify(data))
return {
props: { posts },
}
}
Prisma楽しい。
Discussion