Merge branch 'master' into develop

This commit is contained in:
Barış Soner Uşaklı
2024-02-22 09:27:55 -05:00
2 changed files with 31 additions and 10 deletions

View File

@@ -13,17 +13,25 @@ module.exports = function (module) {
}
value = value.map(v => helpers.valueToString(v));
await module.client.collection('objects').updateOne({
_key: key,
}, {
$addToSet: {
members: {
$each: value,
try {
await module.client.collection('objects').updateOne({
_key: key,
}, {
$addToSet: {
members: {
$each: value,
},
},
},
}, {
upsert: true,
});
}, {
upsert: true,
});
} catch (err) {
if (err && err.message.includes('E11000 duplicate key error')) {
console.log(new Error('e11000').stack, key, value);
return await module.setAdd(key, value);
}
throw err;
}
};
module.setsAdd = async function (keys, value) {

View File

@@ -30,6 +30,19 @@ describe('Set methods', () => {
assert.deepStrictEqual(members, []);
assert(!exists);
});
it('should not error with parallel adds', async () => {
await Promise.all([
db.setAdd('parallelset', 1),
db.setAdd('parallelset', 2),
db.setAdd('parallelset', 3),
]);
const members = await db.getSetMembers('parallelset');
assert.strictEqual(members.length, 3);
assert(members.includes('1'));
assert(members.includes('2'));
assert(members.includes('3'));
});
});
describe('getSetMembers()', () => {