prisma报错Do not know how to serialize a BigInt

作者:linkyang
标签:nuxt3
发布时间:2024年12月20日 19:20:04
更新时间:2025年02月27日 02:20:03

在使用prisma开发个人博客的时候遇到一个不知道如何序列化BigInt的bug:Do not know how to serialize a BigInt。在prisma的github上有人提出了这个Issues,经过查阅分析这个问题可能出现的原因:

  • 当 Prisma 从数据库查询数据时,它返回的是原生的 JavaScript 对象。在很多情况下,这些对象会被转换为 JSON 格式以便进一步传输,比如通过 API 响应传递给前端,如果Prisma使用了 JSON.stringify() 来进行序列化那么就会遇到报错,因为 JavaScript 默认无法序列化 BigInt 类型。
  • 所以根据各位大佬所给的代码的确解决了这个问题,通过给 BigInt 类型添加自定义的 toJSON 方法,可以确保每个 BigInt 类型的数据在序列化时转化为字符串,这样 JSON.stringify()在遇到 BigInt 类型时就能正确工作,而不会抛出错误。
ts
declare global {
  interface BigInt {
    toJSON() string;
  }
}

BigInt.prototype.toJSON = function () {
  return this.toString();
};
  • 由于我使用的是Nuxt3,我将上述代码添加到lib目录下的prisma.ts中就解决了这个问题。

参考链接:

登录后可查看并参与评论

Gitee 登录

目录导航

暂无目录