Using mongoose findbyid with express to get object from database only works with callback? Callbacks importance in newer js frameworks?

I’m doing the express local library tutorial on MDN docs and wanted to experiment returning an object without using a call back method.

When passing in the request object parameter for the id to the the findById mongoose method like so var bookinstance = BookInstance.findById(req.params.id); and log to the console, this is the contents of bookinstance:

BookInstance.findOne({ _id: '63e17d2395d1d4e11604cf22' })

When passing the id and a callback function to the findById method like so

BookInstance.findById(req.params.id, function(err, instance) {
      if (err) {
         next(err);
      }
      console.log('findById callback: ' + instance);
      res.render("bookinstance_delete", {
         title: "Book Instance Delete",
         id: instance._id,
         imprint: instance.imprint,
         book: instance.book
      })
   })

and log to console, the expected book instance object is outputted:

findById callback: {
  _id: new ObjectId("63e17d2395d1d4e11604cf22"),
  book: new ObjectId("63e17d2395d1d4e11604cf16"),
  imprint: 'New York Tom Doherty Associates, 2016.',
  status: 'Available',
  due_back: 2023-02-06T22:20:19.928Z,
  __v: 0
}

Is this something to do with javascript in general? This is the first time i’ve been exposed to express, node, mongoose, and all these javascript based frameworks and technologies, and they all seem to use callbacks quite heavily. Is the purpose of callbacks just to have a way to say, hey execute this task, and when you’re finished, do this task?

When I didn’t use the call back, the object returned is the object and method(findone), when executed, would give me the bookinstance object and properties. So the callback function would take that object as the instance parameter, execute it and return the object? Is that what is going on?