Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am using PostgreSQL triggers to get new data whenever new data inserted into the data table

I am listening to that particular trigger and sending the data to the front-end using graphql subscription and only one time the data is saving in DB still it is triggering multiple times.

I tested changing the events fire condition like "AFTER" and "BEFORE" still, I am getting multiple data.

resource used : NPM packages : "pg": "^8.5.1", Nodejs : v14.15.1

**SQL Trigger and function:**
CREATE FUNCTION devdata() RETURNS trigger AS $dev_data$
BEGIN
PERFORM pg_notify('dev_data_rec',row_to_json(NEW)::text );
RETURN new;
END;
$dev_data$ LANGUAGE plpgsql;

CREATE TRIGGER dev_data
BEFORE INSERT ON tbl_dev_data
FOR EACH ROW EXECUTE PROCEDURE devdata();





**Graphql subscription code :**

Subscription: {
devicedata: {
    subscribe(_, args, { pool, client }, info) {
        try {
            client.query("LISTEN dev_data_rec")
            client.on("notification", async (message) => {

                let data = JSON.parse(message.payload)

                let dev_data = {
                    dev_id: data.device_id,
                    devname: data.devname,
                    value: data.value
                }
                console.log("deviceData", JSON.stringify(dev_data, null, 2))

                pubsub.publish("devicedata", { devicedata: dev_data })
            })
            return pubsub.asyncIterator("devicedata")
        } catch (error) {
            return error
        }
    }
},

sometimes I am getting single data and sometime multiple data


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
292 views
Welcome To Ask or Share your Answers For Others

1 Answer

等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...