Well, I’ve just tested a naive example and it works correctly (no futures).
Meteor.methods({
load: function() {
const data = [
{_id: 'abc', value: 123},
{_id: 'abc', value: 123},
{_id: 'abc', value: 123},
{_id: 'def', value: 321},
{_id: 'def', value: 321},
{_id: 'abc', value: 123},
{_id: 'abc', value: 123},
{_id: 'abc', value: 123},
{_id: 'def', value: 321},
{_id: 'abc', value: 123},
{_id: 'abc', value: 123},
{_id: 'abc', value: 123},
{_id: 'def', value: 321},
{_id: 'def', value: 321},
{_id: 'def', value: 321},
{_id: 'abc', value: 123},
{_id: 'abc', value: 123},
{_id: 'def', value: 321},
{_id: 'def', value: 321},
];
_.each(data, function(doc) {
if (typeof MyCollection.findOne({_id: doc._id}) === 'undefined') {
try {
MyCollection.insert(doc);
} catch(err) {
console.log(err);
}
}
});
}
});
I don’t get any console logs and just two documents inserted.