数组对象传递给函数



我试图传递数组对象

dto:

@InputType('RuleCreateBulkRequest')
export class RuleCreateBulkRequestDto {
@ApiProperty({ type: () => [RuleInputDto] })
@Type(() => RuleInputDto)
@ValidateNested({ each: true })
@Field(() => [RuleInputDto])
bulk?: [RuleInputDto];
}

这是我传递的示例数据:数组的对象

{
"bulk":[
{
name: 'After every minute',
description: 'Will turn on device after every minute',
embedded: false,
triggers: [ [Object] ],
actions: [ [Object] ]
},
{
name: 'After every minute',
description: 'Will turn on device after every minute',
embedded: false,
triggers: [ [Object] ],
actions: [ [Object] ]
}
]
}

这里是零索引[0]值从上面

one {
name: 'After every minute 1',
description: 'Will turn on device after every minute',
embedded: ' false',
triggers: [ { name: 'TimeTrigger', options: [Object] } ],
actions: [ { name: 'EntitySetStateAction', options: [Object] } ]
}

作为数组对象传递给函数。我得到了这样的结果。

RuleDto {
embedded: false,
active: true,
triggers: '[object Object]',
actions: '[object Object]',
id: '71d4c663-182a-4d63-93fd-f9cb30a52f7e',
name: 'After every minute',
description: 'Will turn on device after every minute',
condition: null,
deletedAt: null,
cursorId: 398,
createdAt: 2022-06-20T02:22:59.823Z,
updatedAt: 2022-06-20T02:22:59.823Z,
version: 1
},
RuleDto {
embedded: false,
active: true,
triggers: '[object Object]',
actions: '[object Object]',
id: 'cea158a5-ee1b-4881-839a-06a2d0f3daf6',
name: 'After every minute',
description: 'Will turn on device after every minute',
condition: null,
deletedAt: null,
cursorId: 399,
createdAt: 2022-06-20T02:22:59.823Z,
updatedAt: 2022-06-20T02:22:59.823Z,
version: 1
}

如何获得以下对象的正确值

triggers: '[object Object]',
actions: '[object Object]',

这里有上述值传递的函数

//函数调用

const response = await this.service
.ruleCreateMany(input , ctx  )
.toPromise();
console.log('res',response);

函数def:

@GrpcMethod('RulesService')
async ruleCreateMany(
input: RuleCreateBulkRequestDto,
_ctx: GrpcContext,
): Promise<{ rules: RuleMessage[] }> {


const response = await this.service.createMany({bulk:input.bulk});


console.log('from rule controller :', input.bulk[0]);
console.log('from rule controller bluk  :', input.bulk);
console.log('from rule controller bluk  :', JSON.stringify (input.bulk));

const rules: RuleDto[] = plainToClass(RuleDto, get(response, 'rules', []));
console.log('ruler controler ',rules);

const mapperPromises = rules.map((r: RuleDto) => RuleProto.toProto(r));
return { rules: await Promise.all(mapperPromises) };
}

RuleMessage接口

export interface RuleMessage
extends Omit<RuleDto, 'condition' | 'triggers' | 'actions' | 'createdAt' | 'updatedAt' | 'deletedAt'> {
condition?: string;
triggers: string;
actions: string;
createdAt?: string;
updatedAt?: string;
deletedAt?: string;
}
export const RuleProto = {
toProto(input: RuleDto): RuleMessage {
return {
...input,
condition: input.condition ? JSON.stringify(input.condition) : undefined,
triggers: JSON.stringify(input.triggers),
actions: JSON.stringify(input.actions),
createdAt: input.createdAt ? input.createdAt.toISOString() : undefined,
updatedAt: input.updatedAt ? input.updatedAt.toISOString() : undefined,
deletedAt: input.deletedAt ? input.deletedAt.toISOString() : undefined,
};
},
// triggers: JSON.stringify(input.triggers),
//actions: JSON.stringify(input.actions),
fromProto(input: RuleMessage): RuleDto {
return {
...input,
condition: input.condition ? JSON.parse(input.condition) : undefined,
triggers: JSON.parse (JSON.stringify(input.triggers)),
actions: JSON.parse(input.actions),
createdAt: input.createdAt ? new Date(input.createdAt) : undefined,
updatedAt: input.updatedAt ? new Date(input.updatedAt) : undefined,
deletedAt: input.deletedAt ? new Date(input.deletedAt) : undefined,
};
},
};

export interface RuleInputRequestWithParamsDto {
id: string;
dto: RuleInputDto;
}
export interface RuleRpcService<Context extends GrpcContext = GrpcContext> {
ruleCreateOne(request: RuleMessage, ctx: Context): Promise<RuleMessage>;

ruleCreateMany(
request: RuleCreateBulkRequestDto,
ctx: Context
): Promise<{ rules: RuleMessage[] }>;

from proto file:

rpc RuleCreateMany(com.mevris.server.repository.Rule.RuleCreateBulkRequestDto) returns (com.mevris.server.repository.Rule.ManyRulesDto) {}

console.log(x)只打印根属性。通过声明其类型而不是数据,可以省略其他所有复杂属性。

如果你想打印出完整的对象和所有内部属性,你应该使用JSON。像这样进行字符串化:console.log(JSON.stringify(x))

最新更新