Okay, so node and mongoose. Have you got into the node section of FCC yet? There, you go through building a (for example) URL shortener API. It interfaces with mongoose via Node, and returns a JSON object based on front-end actions.
You will perform some action on the front end, and then pass that to (I’d assume) a node server, whether by a post request, or some such. Node will do something with that, probably do something with mongoose, and return you a JSON object containing something.
An API, or Application Programming Interface, is how the front end and the back end can communicate. If you send something to a known endpoint where node is waiting, and it will send you back something, you’re “consuming” that API.
In your case, you might set up a node server listening for:
GET /todos // a request for all todos as a JSON object
GET /todos/:id // a request for one specific todo as JSON with that id
POST /todos // a POST request to submit a todo, usually get it back as a JSON object
DELETE /todos:id // a DELETE request for a single todo, may return a JSON message or something
PATCH /todos:id // a PATCH request for a single todo, update info on it, and return a JSON object
Those are fairly typical API endpoints, where you’d have node listening for specific things, and the client would be expecting certain return data. What happens on the server, whether it goes to mongoose, MySQL or a text file, is transparent to the front end. It simply tosses the request to the server, which does what it does, then returns the expected JSON that the front end can use however it likes.