当前位置: 首页 > news >正文

解决JSON.stringify 方法在序列化 BigInt 类型时的错误

今天学nest时,使用apifox发送请求获取数据,结果还一直报错,而且还是我从未见过的

 Do not know how to serialize a BigInt at JSON.stringify (<anonymous>) at stringify,

我都是跟着人家敲的,我就纳闷了,就上网查资料   , 原来是我的PrismaClient 返回的对象中包含 BigInt 类型的字段,而 JSON.stringify 无法处理 BigInt 类型,从而导致这个错误。

以下是我的代码:

import { Controller, Get, Param } from '@nestjs/common';
import { AppService } from './app.service';
import { PrismaClient } from "@prisma/client"@Controller()
export class AppController {prisma: PrismaClient;constructor(private readonly appService: AppService) {this.prisma = new PrismaClient()}@Get(':id')async getHello(@Param('id') id: string) {const article = await this.prisma.article.findUnique({where: {id: Number(id)}});}
}

这是从数据库的article表中查找id为 1 的数据,它里面有个content的属性,其值有百多来字

解决方法:

1.直接将BigInt 转为string 

import { Controller, Get, Param } from '@nestjs/common';
import { AppService } from './app.service';
import { PrismaClient } from "@prisma/client"@Controller()
export class AppController {prisma: PrismaClient;constructor(private readonly appService: AppService) {this.prisma = new PrismaClient()}@Get(':id')async getHello(@Param('id') id: string) {const article = await this.prisma.article.findUnique({where: {id: Number(id)}});if (article) {for (const key in article) {if (typeof article[key] === 'bigint') {article[key] = article[key].toString();}}}return article;}
}

2.自定义Json.stringify 方法

import { Controller, Get, Param } from '@nestjs/common';
import { AppService } from './app.service';
import { PrismaClient } from "@prisma/client"@Controller()
export class AppController {prisma: PrismaClient;constructor(private readonly appService: AppService) {this.prisma = new PrismaClient()}@Get(':id')async getHello(@Param('id') id: string) {const article = await this.prisma.article.findUnique({where: {id: Number(id)}});const customJSONStringify = (obj: any) => {return JSON.stringify(obj, (key, value) =>typeof value === 'bigint' ? value.toString() : value);};return JSON.parse(customJSONStringify(article));}
}

解决后获取到的数据:

 content的值使用mock随机生成的

相关文章:

  • ardupilot开发 --- 机载计算机-软件方案 篇
  • 基于单片机的超声波倒车雷达设计
  • 汇舟问卷:国外问卷调查怎么样?
  • mysql like 查询优化
  • 遥感卫星影像处理流程
  • 3403(3519Dv500)算子精度比对工具标杆数据生成环境搭建指导(Caffe)
  • 【Python Cookbook】S01E15 将名称映射到序列的元素中
  • Next.js API Routes:构建服务端功能
  • vue限制日期选择器不能选今年后的日期
  • Unity开发——编辑器打包、3种方式加载AssetBundle资源
  • day25-XML
  • 二叉树非递归遍历(C++)
  • springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用)
  • 【C++入门到精通】C++ thread线程库 [ C++入门 ]
  • 就凭这张图,下订华为享界S9
  • [NodeJS] 关于Buffer
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • android图片蒙层
  •  D - 粉碎叛乱F - 其他起义
  • IDEA常用插件整理
  • PHP的类修饰符与访问修饰符
  • quasar-framework cnodejs社区
  • SQL 难点解决:记录的引用
  • 官方解决所有 npm 全局安装权限问题
  • 和 || 运算
  • 坑!为什么View.startAnimation不起作用?
  • 每天10道Java面试题,跟我走,offer有!
  • 你真的知道 == 和 equals 的区别吗?
  • 如何利用MongoDB打造TOP榜小程序
  • 使用agvtool更改app version/build
  • 事件委托的小应用
  • 为什么要用IPython/Jupyter?
  • 我这样减少了26.5M Java内存!
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (Java入门)抽象类,接口,内部类
  • (LLM) 很笨
  • (pytorch进阶之路)扩散概率模型
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (面试必看!)锁策略
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core Redis 使用有序集合实现延迟队列