mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-30 03:09:53 +01:00
Merge branch 'master' into develop
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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()', () => {
|
||||
|
||||
Reference in New Issue
Block a user