This commit is contained in:
Barış Soner Uşaklı
2021-09-03 20:34:42 -04:00
committed by GitHub
parent 856ba78a5f
commit 0ce4b87d85
4 changed files with 57 additions and 6 deletions

View File

@@ -14,6 +14,9 @@ module.exports = function (module) {
}
const writeData = helpers.serializeData(data);
if (!Object.keys(writeData).length) {
return;
}
try {
if (isArray) {
const bulk = module.client.collection('objects').initializeUnorderedBulkOp();
@@ -39,9 +42,18 @@ module.exports = function (module) {
const writeData = data.map(helpers.serializeData);
try {
const bulk = module.client.collection('objects').initializeUnorderedBulkOp();
keys.forEach((key, i) => bulk.find({ _key: key }).upsert().updateOne({ $set: writeData[i] }));
await bulk.execute();
let bulk;
keys.forEach((key, i) => {
if (Object.keys(writeData[i]).length) {
if (!bulk) {
bulk = module.client.collection('objects').initializeUnorderedBulkOp();
}
bulk.find({ _key: key }).upsert().updateOne({ $set: writeData[i] });
}
});
if (bulk) {
await bulk.execute();
}
} catch (err) {
if (err && err.message.startsWith('E11000 duplicate key error')) {
return await module.setObjectBulk(keys, data);

View File

@@ -11,7 +11,9 @@ module.exports = function (module) {
if (data.hasOwnProperty('')) {
delete data[''];
}
if (!Object.keys(data).length) {
return;
}
await module.transaction(async (client) => {
const dataString = JSON.stringify(data);
async function setOne(key) {

View File

@@ -41,7 +41,11 @@ module.exports = function (module) {
return;
}
const batch = module.client.batch();
keys.forEach((k, i) => batch.hmset(k, data[i]));
keys.forEach((k, i) => {
if (Object.keys(data[i]).length) {
batch.hmset(k, data[i]);
}
});
await helpers.execBatch(batch);
cache.del(keys);
};