From 88262e59b3f86b42a26f826f34c980f17e9d28ed Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 19 Oct 2023 14:48:01 +0200 Subject: [PATCH 1/2] WS: fix inserting records --- lib/server/websocket.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/server/websocket.js b/lib/server/websocket.js index b3ad9df59af..cc5a0dd9e0e 100644 --- a/lib/server/websocket.js +++ b/lib/server/websocket.js @@ -403,7 +403,7 @@ function init (env, ctx, server) { } // if not found create new record console.log(LOG_DEDUP + 'Adding new record'); - ctx.store.collection(collection).insert(data.data, function insertResult (err, doc) { + ctx.store.collection(collection).insertOne(data.data, function insertResult (err, doc) { if (err != null && err.message) { console.log('treatments data insertion error: ', err.message); return; @@ -451,7 +451,7 @@ function init (env, ctx, server) { }); - ctx.store.collection(collection).insert(data.data, function insertResult (err, doc) { + ctx.store.collection(collection).insertOne(data.data, function insertResult (err, doc) { if (err != null && err.message) { console.log('devicestatus insertion error: ', err.message); return; @@ -469,7 +469,7 @@ function init (env, ctx, server) { ctx.bus.emit('data-received'); }); } else { - ctx.store.collection(collection).insert(data.data, function insertResult (err, doc) { + ctx.store.collection(collection).insertOne(data.data, function insertResult (err, doc) { if (err != null && err.message) { console.log(data.collection + ' insertion error: ', err.message); return; From 2638686e62595c3f2a9798453bc3b0fcbdc81a53 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 19 Oct 2023 15:14:14 +0200 Subject: [PATCH 2/2] WS: find object after insert --- lib/server/websocket.js | 81 ++++++++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 30 deletions(-) diff --git a/lib/server/websocket.js b/lib/server/websocket.js index cc5a0dd9e0e..4dbe5aa325f 100644 --- a/lib/server/websocket.js +++ b/lib/server/websocket.js @@ -409,16 +409,23 @@ function init (env, ctx, server) { return; } - ctx.bus.emit('data-update', { - type: data.collection - , op: 'update' - , changes: ctx.ddata.processRawDataForRuntime(doc.ops) - }); - - if (callback) { - callback(doc.ops); - } - ctx.bus.emit('data-received'); + if (!err) { + ctx.store.collection(collection).findOne({ '_id': doc.insertedId } + , function(err, results) { + if (!err && results !== null) { + ctx.bus.emit('data-update', { + type: data.collection + , op: 'update' + , changes: ctx.ddata.processRawDataForRuntime([results]) + }); + + if (callback) { + callback([results]); + } + ctx.bus.emit('data-received'); + } + }); + } }); }); }); @@ -457,16 +464,23 @@ function init (env, ctx, server) { return; } - ctx.bus.emit('data-update', { - type: 'devicestatus' - , op: 'update' - , changes: ctx.ddata.processRawDataForRuntime(doc.ops) - }); - - if (callback) { - callback(doc.ops); - } - ctx.bus.emit('data-received'); + if (!err) { + ctx.store.collection(collection).findOne({ '_id': doc.insertedId } + , function(err, results) { + if (!err && results !== null) { + ctx.bus.emit('data-update', { + type: data.collection + , op: 'update' + , changes: ctx.ddata.processRawDataForRuntime([results]) + }); + + if (callback) { + callback([results]); + } + ctx.bus.emit('data-received'); + } + }); + } }); } else { ctx.store.collection(collection).insertOne(data.data, function insertResult (err, doc) { @@ -475,16 +489,23 @@ function init (env, ctx, server) { return; } - ctx.bus.emit('data-update', { - type: data.collection - , op: 'update' - , changes: ctx.ddata.processRawDataForRuntime(doc.ops) - }); - - if (callback) { - callback(doc.ops); - } - ctx.bus.emit('data-received'); + if (!err) { + ctx.store.collection(collection).findOne({ '_id': doc.insertedId } + , function(err, results) { + if (!err && results !== null) { + ctx.bus.emit('data-update', { + type: data.collection + , op: 'update' + , changes: ctx.ddata.processRawDataForRuntime([results]) + }); + + if (callback) { + callback([results]); + } + ctx.bus.emit('data-received'); + } + }); + } }); } });