Joaquin Diaz
Joaquin Diaz

Reputation: 1

How can I post a container in Storage api from loopback?

I already have declared my datasource ,my model and the connector between these.

My model

{
  "name": "container",
  "base": "Model",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

Datasource

"storage": {
    "name": "storage",
    "connector": "loopback-component-storage",
    "provider": "filesystem",
    "root": "./server/storage"
  }

My provider

{
  "filesystem": {
    "root": "./server/storage"
  }
}

And the Connector

"container": {
    "dataSource": "storage",
    "public": true
  }

I try posting a object like {"Object":"container1"} into path "./server/storage" but I get the following error from callback.

{
  "error": {
    "statusCode": 500,
    "name": "TypeError",
    "message": "Path must be a string. Received undefined",
    "stack": "TypeError: Path must be a string. Received undefined.."
  }
}

Please who can help me to find my issue? Thanks!

Upvotes: 0

Views: 885

Answers (3)

Chalang
Chalang

Reputation: 181

If you need a programmatic way to add new containers, let's say for example you want to create a filesystem of sorts for new users. You can use the route below. "Container" is the name I called my Model, you can call yours whatever you'd like.

POST localhost:3000/api/container

Inside the body of the post request you have to have an attribute name and the value of the name can be the new container you're creating. The Strongloop/Loopback documentation, which can be found here, is not accurate and neither is the error you get back when you try to post it with their directions.

"error": {
    "statusCode": 500,
    "name": "TypeError",
    "message": "Path must be a string. Received undefined"
}

An excerpt of the code to send a post request to create a new container is also below.

var request = require("request");

var options = {
    method: 'POST',
    url: 'http://localhost:3000/api/containers',
    body: { name: 'someNewContainer' },
    json: true
};

request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});

Upvotes: 0

Steff Beckers
Steff Beckers

Reputation: 23

You can also use "name" instead of "Object" as key in your JSON object to create a new container/directory using the API. POST /api/containers {"name":"container1"}

Upvotes: 2

Joaquin Diaz
Joaquin Diaz

Reputation: 1

The way to post a container is, without using the loopback api. Create a folder that is gonna be the container into your provider path (being filesystem). As simple as that!

Upvotes: 0

Related Questions