mongo-db-filsystem module creates a "window like explorer" tree structure of files and folders in Atlas MongoDB database.
Installation
This is a Node.js module available through the npm registry. Installation is done using the npm install command:
$ npm install mongo-db-filsystem
Usage
Environment variables
The following environment variables are required.
Evironment Variable Name | Description |
---|---|
FILESYSTEM_DATABASE_URL | URI connection string could reference a local database during development |
ACCESS_TOKEN_SECRET | A string generated by running require('crypto').randomBytes(64).toString() in the terminal will work as a secret |
REFRESH_TOKEN_SECRET | A string generated by running require('crypto').randomBytes(64).toString() in the terminal will work as a secret |
Simple usage
const port = process.env.PORT || 3000;
const express = require('express');
const app = express();
require('mongo-db-filsystem')(app);
app.use(fileSystem);
app.use(express.json({ limit: "140mb", extended: true }));
app.listen(port, function () {
console.log("Listening on port " + port);
})
Configuring mongo-db-filsystem
Options:
- white_list: "http://127.0.0.1:5500, http://localhost:5000", //cors whitelist. The default: undefined
- access_token_expiry: "15s", //default: 900s
- cookie_max_age: 1000*60*60, //default: 1000*60*60*24 (1 day)
- cookie_secure: false, //default: true
Simple usage with options
const port = process.env.PORT || 3500;
const express = require('express');
const app = express();
const options = {
white_list: ["http://127.0.0.1:5500", "http://localhost:3000/"],
access_token_expiry: "15s",
cookie_max_age: 1000 * 60 * 60,
cookie_secure: false
};
require('mongo-db-filsystem')(app, options);
app.use(fileSystem);
app.use(express.json({ limit: "140mb", extended: true }));
app.listen(port, function () {
console.log("Listening on port " + port);
})
REST API Endpoints
mongo-db-filsystem REST API provides many documented endpoints, but also allows you to customize your own.
See endpoints doc for a full documentation of the endpoints.
Here are the endpoints provided by mongo-db-filsystem that perform CRUD operations on resources in REST style.
Method | Endpoint | Description |
---|---|---|
POST | /connect | Connects a registered user to mongo-db-filsystem |
POST | /re-connect | Re-connects a previously connected user to mongo-db-filsystem |
POST | /disconnect | Dis-connects a connected user from mongo-db-filsystem |
POST | /refresh_token | Renew the access and refresh tokens of a connected user |
POST | /registerFs | Register a new user to mongo-db-filsystem |
POST | /readFile | Connects a registered user to mongo-db-filsystem |
POST | /readStream | Re-connects a previously connected user to mongo-db-filsystem |
POST | /writeFile | Dis-connects a connected user from mongo-db-filsystem |
POST | /appendFile | Renew the access and refresh tokens of a connected user |
POST | /copyFile | Register a new user to mongo-db-filsystem |
POST | /rename | Connects a registered user to mongo-db-filsystem |
POST | /createFile | Re-connects a previously connected user to mongo-db-filsystem |
POST | /access | Dis-connects a connected user from mongo-db-filsystem |
DELETE | /removeFile | Renew the access and refresh tokens of a connected user |
DELETE | /removeFolder | Register a new user to mongo-db-filsystem |
POST | /stat | Dis-connects a connected user from mongo-db-filsystem |
POST | /mkdir | Renew the access and refresh tokens of a connected user |
GET | /config | Renew the access and refresh tokens of a connected user |
POST | /config | Renew the access and refresh tokens of a connected user |
POST | /tree | Register a new user to mongo-db-filsystem |
Customizing mongo-db-filsystem REST API
...
const app = express();
const { router, getFileSystem, authenticateToken } = require("./file-system-routes")(app);
router.get("/custom", authenticateToken, (req, res) => {
const username = req.user.username;
const fsPromises = getFileSystem(username).promises;
console.log(fsPromises);
});
app.use(router);
...