i can not get rules. rules are empty. Data transfer array of objects .
function ruleCreateMany
return empty { } . where i am doing wrong .
Am i pass argument array right way .
here is my input array
var rules= [
{
"name": "After every minute",
"description": "Will turn on device after every minute",
"embedded": false,
"triggers": [{
"name": "TimeTrigger",
"options": {
"cron": "* * * * 5"
}
}],
"actions": [{
"name": "EntitySetStateAction",
"options": {
"state" : `\"on\": false,\"thermostat.mode\":\"cool\",\"thermostat.setpoint\":17,\"fanSpeed.mode\":\"high\"}`,
"entityId": "47bf87ab-31cf-4df1-ac56-9c8c34528280"
}
}]
},
{
"name": "After every minute",
"description": "Will turn on device after every minute",
"embedded": false,
"triggers": [{
"name": "TimeTrigger",
"options": {
"cron": "* * * * 5"
}
}],
"actions": [{
"name": "EntitySetStateAction",
"options": {
"state": "{\"on\": false,\"thermostat.mode\":\"cool\",\"thermostat.setpoint\":17,\"fanSpeed.mode\":\"high\",}",
"entityId": "47bf87ab-31cf-4df1-ac56-9c8c34528280"
}
}]
}
]
and function
async createMany(input: RuleCreateBulkRequestDto , ctx: GrpcContext): Promise<RuleDto[]> {
console.log(input.bulk.length);
const response = await this.service
.ruleCreateMany(input , ctx)
.toPromise();
console.log('res',response);
const rules: RuleMessage[] = response?.rules || [];
console.log('here is rules:', rules);
const mapperPromises = rules.map((r: RuleMessage) => RuleProto.fromProto(r));
console.log('mapperPromises :',mapperPromises);
return await Promise.all(mapperPromises);
}
and here is 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,
};
},
fromProto(input: RuleMessage): RuleDto {
return {
...input,
condition: input.condition ? JSON.parse(input.condition) : undefined,
triggers: JSON.parse(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[] }>;
and final result i got in this function
async onDatabaseUpdate(rule: Rule) {
// for(let i=0; i<5; i++){
// console.log('here123 :',rule.);
// }
console.log('object : ', rule);
here is result what i got :
PARAMETERS: [0,"After every minute","Will turn on device after every minute","\"[object Object]\"","\"[object Object]\"",0,"After every minute","Will turn on device after every minute","\"[object Object]\"","\"[object Object]\""]
here is problem "[object Object]\
. how i got value instead "[object Object]`