const list = async function({
end_cursor = 0
} = {}) {
return await db.collection.find().sort({ _id: -1 }).skip(end_cursor).limit(50);
}
Выше приведен код, который, как я думал, должен работать, но я обнаружил, что это не так. Вот очевидное:
let list1 = await list(0);
list1 = list1.reduce((o, a)=>{
let {
_id
} = a;
o[_id] = true;
return o;
}, {});
let list2 = await list(50);
for (let i of list2) {
let {
_id
} = i;
if (list1[_id]) {
console.log('repeated');
break;
}
}
Если db.collection.find().sort({ _id: -1 }).skip(end_cursor).limit(50)
работает, list1 и list2 должны иметь уникальные _id
s, но они этого не делают, вместо этого консоль выводит repeat
.