Skip to content

Commit

Permalink
Merge pull request #8332 from AbdelrahmanHafez/master
Browse files Browse the repository at this point in the history
Fixes #8331
  • Loading branch information
vkarpov15 committed Nov 13, 2019
2 parents c900645 + a91dc93 commit 98facde
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/helpers/model/castBulkWrite.js
Expand Up @@ -34,6 +34,9 @@ module.exports = function castBulkWrite(model, op, options) {
op = op['updateOne'];
return (callback) => {
try {
if (!op['filter']) throw new Error('Must provide a filter object.');
if (!op['update']) throw new Error('Must provide an update object.');

op['filter'] = cast(model.schema, op['filter']);
op['update'] = castUpdate(model.schema, op['update'], {
strict: model.schema.options.strict,
Expand Down Expand Up @@ -61,6 +64,9 @@ module.exports = function castBulkWrite(model, op, options) {
op = op['updateMany'];
return (callback) => {
try {
if (!op['filter']) throw new Error('Must provide a filter object.');
if (!op['update']) throw new Error('Must provide an update object.');

op['filter'] = cast(model.schema, op['filter']);
op['update'] = castUpdate(model.schema, op['update'], {
strict: model.schema.options.strict,
Expand Down
28 changes: 28 additions & 0 deletions test/model.test.js
Expand Up @@ -5674,6 +5674,34 @@ describe('Model', function() {
then(() => Model.findOne()).
then(doc => assert.equal(doc.nested.name, 'foo'));
});

it('throws an error if no update object is provided (gh-8331)', function() {
const userSchema = new Schema({ name: { type: String, required: true } });
const User = db.model('gh8331', userSchema);

return co(function*() {
const createdUser = yield User.create({ name: 'Hafez' });
let threw = false;
try {
yield User.bulkWrite([{
updateOne: {
filter: { _id: createdUser._id }
}
}]);
}
catch (err) {
threw = true;
assert.equal(err.message, 'Must provide an update object.');
}
finally {
assert.equal(threw, true);

const userAfterUpdate = yield User.findOne({ _id: createdUser._id });

assert.equal(userAfterUpdate.name, 'Hafez', 'Document data is not wiped if no update object is provided.');
}
});
});
});

it('insertMany with Decimal (gh-5190)', function(done) {
Expand Down

0 comments on commit 98facde

Please sign in to comment.