Мне нужно было создать базу данных с MongoDb, Node.js и подключиться к серверу WebSocket, а также обновлять базу данных данными, отправленными из Websockets. Websockets отправляет много видов данных, связанных с конкретным идентификатором устройства. Работает нормально, соединение установлено, оно продолжает обновлять Mongo, но дело в том, что иногда, когда данные об определенном устройстве отправляются в первый раз, он создает один и тот же объект дважды. Не уверен, правильно ли я объяснил, что имею в виду, но идея состоит в том, чтобы не допустить, чтобы Mongo удвоил устройство при его создании.
connection.onmessage = e => {
const resp = JSON.parse(e.data)
const server_name = e.target._socket._host.slice(0, 5)
setTimeout(() => {
push_data_to_database(resp, server_name)
},500)
}
push_data_to_database = (message, server) => {
// console.log("data::::", message)
deviceControllers.addDevice({device_id: message.device_id, server_name: server})
if (message.event == 'SCRIPT_START') {
deviceControllers.updateDevice(
{device_id: message.device_id},
{scriptexecute_timestamp: message.timestamp}
)
}
}
И функция для добавления устройства в базу данных
exports.addDevice = async(req, resp) => {
try {
const validation = await Device.find(req)
if (!validation.length && req.device_id !== undefined) {
const device = new Device(req)
console.log('added:',device)
return device.save()
}
}
catch (err) {
throw err
}
}