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