Update MongoDB connector
This commit is contained in:
1 parent
ea8273556f
commit
dfc8928a71
6 files changed
+219
-230
No files matched your search
+80
-76
@@ -83,18 +83,23 @@ function listener(request, response) {
|
||||
if (request.method === "PUT") {
|
||||
const preset = JSON.parse(body);
|
||||
preset._id = presetName;
|
||||
db.presetsCollection.save(preset, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del("presets_hash", err => {
|
||||
db.presetsCollection.replaceOne(
|
||||
{ _id: presetName },
|
||||
preset,
|
||||
{ upsert: true },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
});
|
||||
cache.del("presets_hash", err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
}
|
||||
);
|
||||
} else if (request.method === "DELETE") {
|
||||
db.presetsCollection.remove({ _id: presetName }, err => {
|
||||
db.presetsCollection.deleteOne({ _id: presetName }, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del("presets_hash", err => {
|
||||
@@ -115,18 +120,23 @@ function listener(request, response) {
|
||||
if (request.method === "PUT") {
|
||||
const object = JSON.parse(body);
|
||||
object._id = objectName;
|
||||
db.objectsCollection.save(object, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del("presets_hash", err => {
|
||||
db.objectsCollection.replaceOne(
|
||||
{ _id: objectName },
|
||||
object,
|
||||
{ upsert: true },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
});
|
||||
cache.del("presets_hash", err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
}
|
||||
);
|
||||
} else if (request.method === "DELETE") {
|
||||
db.objectsCollection.remove({ _id: objectName }, err => {
|
||||
db.objectsCollection.deleteOne({ _id: objectName }, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del("presets_hash", err => {
|
||||
@@ -158,18 +168,23 @@ function listener(request, response) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.provisionsCollection.save(object, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del("presets_hash", err => {
|
||||
db.provisionsCollection.replaceOne(
|
||||
{ _id: provisionName },
|
||||
object,
|
||||
{ upsert: true },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
});
|
||||
cache.del("presets_hash", err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
}
|
||||
);
|
||||
} else if (request.method === "DELETE") {
|
||||
db.provisionsCollection.remove({ _id: provisionName }, err => {
|
||||
db.provisionsCollection.deleteOne({ _id: provisionName }, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del("presets_hash", err => {
|
||||
@@ -201,18 +216,23 @@ function listener(request, response) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.virtualParametersCollection.save(object, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del("presets_hash", err => {
|
||||
db.virtualParametersCollection.replaceOne(
|
||||
{ _id: virtualParameterName },
|
||||
object,
|
||||
{ upsert: true },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
});
|
||||
cache.del("presets_hash", err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
response.end();
|
||||
});
|
||||
}
|
||||
);
|
||||
} else if (request.method === "DELETE") {
|
||||
db.virtualParametersCollection.remove(
|
||||
db.virtualParametersCollection.deleteOne(
|
||||
{ _id: virtualParameterName },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
@@ -234,7 +254,7 @@ function listener(request, response) {
|
||||
const deviceId = querystring.unescape(r[1]);
|
||||
const tag = querystring.unescape(r[2]);
|
||||
if (request.method === "POST") {
|
||||
db.devicesCollection.update(
|
||||
db.devicesCollection.updateOne(
|
||||
{ _id: deviceId },
|
||||
{ $addToSet: { _tags: tag } },
|
||||
{ safe: true },
|
||||
@@ -245,7 +265,7 @@ function listener(request, response) {
|
||||
}
|
||||
);
|
||||
} else if (request.method === "DELETE") {
|
||||
db.devicesCollection.update(
|
||||
db.devicesCollection.updateOne(
|
||||
{ _id: deviceId },
|
||||
{ $pull: { _tags: tag } },
|
||||
{ safe: true },
|
||||
@@ -267,12 +287,12 @@ function listener(request, response) {
|
||||
);
|
||||
const deviceId = faultId.split(":", 1)[0];
|
||||
const channel = faultId.slice(deviceId.length + 1);
|
||||
db.faultsCollection.remove({ _id: faultId }, err => {
|
||||
db.faultsCollection.deleteOne({ _id: faultId }, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
if (channel.startsWith("task_")) {
|
||||
const objId = new mongodb.ObjectID(channel.slice(5));
|
||||
return void db.tasksCollection.remove({ _id: objId }, err => {
|
||||
return void db.tasksCollection.deleteOne({ _id: objId }, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
cache.del(`${deviceId}_tasks_faults_operations`, err => {
|
||||
@@ -396,7 +416,7 @@ function listener(request, response) {
|
||||
if (request.method === "DELETE") {
|
||||
db.tasksCollection.findOne(
|
||||
{ _id: new mongodb.ObjectID(taskId) },
|
||||
{ device: 1 },
|
||||
{ projection: { device: 1 } },
|
||||
(err, task) => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
@@ -407,12 +427,12 @@ function listener(request, response) {
|
||||
}
|
||||
|
||||
const deviceId = task.device;
|
||||
db.tasksCollection.remove(
|
||||
db.tasksCollection.deleteOne(
|
||||
{ _id: new mongodb.ObjectID(taskId) },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
db.faultsCollection.remove(
|
||||
db.faultsCollection.deleteOne(
|
||||
{ _id: `${deviceId}:task_${taskId}` },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
@@ -437,12 +457,12 @@ function listener(request, response) {
|
||||
if (request.method === "POST") {
|
||||
db.tasksCollection.findOne(
|
||||
{ _id: new mongodb.ObjectID(taskId) },
|
||||
{ device: 1 },
|
||||
{ projection: { device: 1 } },
|
||||
(err, task) => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
const deviceId = task.device;
|
||||
db.faultsCollection.remove(
|
||||
db.faultsCollection.deleteOne(
|
||||
{ _id: `${deviceId}:task_${taskId}` },
|
||||
err => {
|
||||
if (err) return void throwError(err, response);
|
||||
@@ -476,25 +496,19 @@ function listener(request, response) {
|
||||
productClass: request.headers.productclass,
|
||||
version: request.headers.version
|
||||
};
|
||||
const gs = new mongodb.GridStore(db.mongoDb, filename, filename, "w", {
|
||||
const bucket = new mongodb.GridFSBucket(db.client.db());
|
||||
const uploadStream = bucket.openUploadStreamWithId(filename, filename, {
|
||||
metadata: metadata
|
||||
});
|
||||
gs.open(err => {
|
||||
uploadStream.end(body, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
gs.write(body, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
gs.close(err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(201);
|
||||
response.end();
|
||||
});
|
||||
});
|
||||
response.writeHead(201);
|
||||
response.end();
|
||||
});
|
||||
} else if (request.method === "DELETE") {
|
||||
mongodb.GridStore.unlink(db.mongoDb, filename, err => {
|
||||
const bucket = new mongodb.GridFSBucket(db.client.db());
|
||||
bucket.delete(filename, err => {
|
||||
if (err) return void throwError(err, response);
|
||||
|
||||
response.writeHead(200);
|
||||
@@ -597,7 +611,7 @@ function listener(request, response) {
|
||||
projection[p.trim()] = 1;
|
||||
}
|
||||
|
||||
const cur = collection.find(q, projection, { batchSize: 50 });
|
||||
const cur = collection.find(q, { projection: projection });
|
||||
|
||||
if (urlParts.query.sort) {
|
||||
const s = JSON.parse(urlParts.query.sort);
|
||||
@@ -613,9 +627,7 @@ function listener(request, response) {
|
||||
|
||||
if (urlParts.query.skip) cur.skip(parseInt(urlParts.query.skip));
|
||||
|
||||
let limit;
|
||||
if (urlParts.query.limit)
|
||||
cur.limit((limit = parseInt(urlParts.query.limit)));
|
||||
if (urlParts.query.limit) cur.limit(parseInt(urlParts.query.limit));
|
||||
|
||||
cur.count(false, (err, total) => {
|
||||
if (err) return void throwError(err);
|
||||
@@ -632,24 +644,16 @@ function listener(request, response) {
|
||||
|
||||
response.write("[\n");
|
||||
i = 0;
|
||||
cur.each((err, item) => {
|
||||
if (err) {
|
||||
throwError(err);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (item) {
|
||||
cur.forEach(
|
||||
item => {
|
||||
if (i++) response.write(",\n");
|
||||
response.write(JSON.stringify(item));
|
||||
}
|
||||
|
||||
if (!item || i >= limit) {
|
||||
},
|
||||
err => {
|
||||
if (err) return void throwError(err);
|
||||
response.end("\n]");
|
||||
return false;
|
||||
}
|
||||
|
||||
return null;
|
||||
});
|
||||
);
|
||||
});
|
||||
} else {
|
||||
response.writeHead(404);
|
||||
|
||||
Reference in new issue
Block a user