LoopBack storage postgres component provides Node.js and REST APIs to manage binary contents using Postgres Large Object
Install the storage component as usual for a Node package:
npm install --save loopback-component-storage-postgres
Create a table to store file descriptions
CREATE TABLE "my-table-to-store-files" (
id SERIAL PRIMARY KEY,
container TEXT NOT NULL,
filename TEXT NOT NULL,
mimetype TEXT,
objectid INTEGER UNIQUE NOT NULL
);
Edit you datasources.json and add the following part
"pg_file": {
"name": "pg_file",
"connector": "loopback-component-storage-postgres",
"host": "localhost",
"port": 5432,
"database": "test",
"table": "my-table-to-store-files",
"username": "test-user",
"password": "test-password"
}
And the you can use it as a datasource of your model.
Description | Container model method | REST URI |
---|---|---|
List all containers | getContainers(callback) | GET /api/<model> |
Get information about specified container | getContainer(container, callback) | GET /api/<model>/:container |
Create a new container | createContainer(options, callback) | PORT /api/<model> |
Delete specified container | destroyContainer(options, callback) | DELETE /api/<model>/:container |
List all files within specified container | getFiles(container, callback) | GET /api/<model>/:container/files |
Get information for specified file within specified container | getFile(container, file, callback) | GET /api/<model>/:container/files/:file |
Delete a file within a given container by name | removeFile(container, file, callback) | DELETE /api/<model>/:container/files/:file |
Upload one or more files into the specified container | upload(container, req, res, callback) | POST /api/<model>/:container/upload |
Download a file within specified container | download(container, file, res, callback) | GET /api/<model>/:container/download/:file |