While FFI makes it easy to call native code, you really shouldn't use it to for something you have to do often, like calling a database library. From the docs:
There is non-trivial overhead associated with FFI calls. Comparing a hard-coded binding version of strtoul() to an FFI version of strtoul() shows that the native hard-coded binding is orders of magnitude faster. So don't just use the C version of a function just because it's faster. There's a significant cost in FFI calls, so make them worth it.
In other words, FFI works, but is slow. This is fine if you just need to make a few calls, but very bad news if you need to make frequent calls.
What you need to do is write an addon. Addons are C++ modules that provide glue to C and C++ libraries. (Just because you must write the addon in C++ doesn't mean you can't call pure C code from the addon!)
The node docs provide plenty of examples that should get you started. If you're working with Windows, here's some tips to get VS set up.
If the calls to the C library are blocking, you'll need to make them async. libuv provides a thread pool you can do the work on.