我有一个类型为
Decimal
的字段,但是当我从客户端获取数据时,我收到的字段为 string
,它应该是 number
类型
我的对象类型:
import { Decimal } from '@prisma/client/runtime/library';
import { GraphQLDecimal } from 'prisma-graphql-type-decimal';
@ObjectType()
export class Supplier {
@Field(() => GraphQLDecimal, {nullable:false})
commission!: Decimal;
}
回应:
{
// Other fields....
id: 7;
isConfirmed: false;
webAppLanguage: 'fr';
// Should be number
commission: '0.3';
}
我尝试过的:
我尝试使用nestjs添加基于字段的中间件来将小数对象转换为数字类型,但没有成功。
export const decimalCastMiddleWare: FieldMiddleware = async (
ctx: MiddlewareContext,
next: NextFn,
) => {
let value = await next();
if (Decimal.isDecimal(value)) {
value = value.toNumber();
}
return value;
};
// Middleware field-based
{
buildSchemaOptions: {
// Other ApolloDriverConfig config options...
fieldMiddleware: [decimalCastMiddleWare]
}
}
来自这个答案,尝试一下
Sharing a transformer we use:
/// ColumnNumericTransformer
export class ColumnNumericTransformer {
to(data: number): number {
return data;
}
from(data: string): number {
return parseFloat(data);
}
}
in entity:
@Column('numeric', {
precision: 7,
scale: 2,
transformer: new ColumnNumericTransformer(),
})
public myNumericColumn: number;