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楽しい。
Author And Source
この問題について(Next.js + PrismaでDatetime型をwhereする), 我々は、より多くの情報をここで見つけました https://zenn.dev/matsuo/articles/1056ccfb06be5c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol