Traditionally, server-side projects have been developed as standalone applications that guide the communication between the client-side frontend and the database backend. This has led to applications that were either developed as single monoliths or that duplicated data access and domain logic across all services that had to access the database. Additionally, tools to abstract away the underlying database calls could incur a lot of network overhead when using remote databases without careful optimization.
in ArangoDB is synchronous. This means any code that depends on asynchronous
behavior like promises or
setTimeout will not behave correctly in
ArangoDB or Foxx. Additionally, ArangoDB does not support native extensions
When using bundled node modules keep in mind that these restrictions not only apply to the modules themselves but also the node dependencies of those modules. As a rule of thumb:
Modules written to work in Node.js and the browser that do not rely on async behavior should generally work
Modules that rely on network or filesystem I/O or make heavy use of async behavior most likely will not