0

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]`

ali
  • 3
  • 3

0 Answers0