skip to Main Content

I have a problem trying to delete data by providing an array of id’s (got error).
I guess it has something to do with ObjectId. Could you help me fix it?

User.deleteMany({
  _id: { $in:     ['638207a8b9ebc3ea8f276684',
                  '63823ffe310abc61b4ee11a0',
                  '63822a71319517d196af6d59' }
})
.then(() => res.status(200).json({ success }))
.catch(error => console.error('Error deleting users'))

I tried to map this array to prepend every item of it with ObjectId but got ObjectId is not found.

2

Answers


  1. Try this..

    let userIds = ['638207a8b9ebc3ea8f276684',
        '63823ffe310abc61b4ee11a0',
        '63822a71319517d196af6d59']
        let userObjectIds = userIds.map(e=>Types.ObjectId(e))
        User.deleteMany({
            _id: { $in:  userObjectIds  }
          })
          .then(() => res.status(200).json({ success }))
          .catch(error => console.error('Error deleting users'))
    
    Login or Signup to reply.
  2. If the code you pasted above is the exact code you are running, the problem is likely your input ids array syntax. It seems as though you are missing a close square bracket (]). Try this instead:

    const userIds = ['638207a8b9ebc3ea8f276684', '63823ffe310abc61b4ee11a0', '63822a71319517d196af6d59']
    User.deleteMany({
      _id: { $in: userIds }
    })
    .then(() => res.status(200).json({ success }))
    .catch(error => console.error(`Error deleting users: ${error}`))
    

    If that doesn’t work, you may need to follow Alex’s advice by mapping them to ObjectId types. As a side note, it’s always good practice to save your input into a variable rather than hard code it. It’s also helpful for debugging to log the contents of the error from your catch callback

    console.error(`this is my error: ${error}`)
    

    Hope that helps you out, happy coding 🙂

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search