There's a lot of confusion about Node.js, NPM, and Angular. These 3 "entities" are often used together, especially for Angular applications, but they are not the same thing.
Let's make it clear!
Node.js uses asynchronous programming: while a typical server handles one request per time (thus creating overhead while waiting for the request completion), Node.js accepts all the requests and handles them one by one in a manner that does not block other requests. This is obviously very efficient.
NPM is the package manager for Node.js packages. It contains thousands of free packages available to download; also, using the command line, it's easy to download and update those packages.
NPM is commonly used with Node.js, so it is installed with the server environment.
The way to install a package is with the command
npm install <package_name>.
Now we know what Node.js, NPM, and Angular are, and how they fit together.
Node.js is just the server that handles the requests from the web page; these pages can call web APIs from whatever kind of server, and of course look up to data in any type of DB.