freeCodeCamp/curriculum/challenges/english/05-apis-and-microservices/mongodb-and-mongoose/perform-new-updates-on-a-do...

1.9 KiB

id title challengeType forumTopicId
587d7fb8367417b2b2512c0f Perform New Updates on a Document Using model.findOneAndUpdate() 2 301542

Description

Recent versions of Mongoose have methods to simplify documents updating. Some more advanced features (i.e. pre/post hooks, validation) behave differently with this approach, so the classic method is still useful in many situations. findByIdAndUpdate() can be used when searching by id.

Instructions

Modify the findAndUpdate function to find a person by Name and set the person's age to 20. Use the function parameter personName as the search key.

Note: You should return the updated document. To do that, you need to pass the options document { new: true } as the 3rd argument to findOneAndUpdate(). By default, these methods return the unmodified object.

Tests

tests:
  - text: findOneAndUpdate an item should succeed
    testString: |
      getUserInput => $.post(getUserInput('url') + '/_api/find-one-update', {name:'Dorian Gray', age: 35, favoriteFoods:['unknown']}).then(data => {
        assert.equal(data.name, 'Dorian Gray', 'item.name is not what expected');
        assert.equal(data.age, 20, 'item.age is not what expected');
        assert.deepEqual(data.favoriteFoods, ['unknown'], 'item.favoriteFoods is not what expected');
        assert.equal(data.__v, 0, 'findOneAndUpdate does not increment version by design!');
        }, xhr => { throw new Error(xhr.responseText); })      

Challenge Seed

Solution

/**
  Backend challenges don't need solutions, 
  because they would need to be tested against a full working project. 
  Please check our contributing guidelines to learn more.
*/