Вопрос:

Loopback + Невозможно инициализировать соединитель «loopback-component-storage»

node.js loopbackjs loopback angular-loopback

1272 просмотра

4 ответа

11 Репутация автора

Я использую петлевой компонент "loopback-component-storage"для загрузки файлов. Но проблема в том, что после добавления этого компонента хранения и его модели с именем «Контейнер» я не могу перенести модели из своего приложения в базу данных.

Следующее является ошибкой, что я получаю

Error: Cannot create data source "storage": Cannot initialize connector "loopback-component-storage": FileSystemProvider: Path does not exist: ./server/files
    at new FileSystemProvider

Но у меня есть каталог / server / files в проекте, описанном с помощью этого снимка

Ниже приведен файл datasources.json

{
  "school": {
    "host": "127.0.0.1",
    "port": 3306,
    "url": "",
    "database": "school_db",
    "password": "root",
    "name": "school",
    "user": "root",
    "connector": "mysql"
  },
  "storage": {
    "name": "storage",
    "connector": "loopback-component-storage",
    "provider": "filesystem",
    "root": "./server/files"
  }
}

Следующее model-config.json(частично, не полное)

{
  "_meta": {
    "sources": [
      "loopback/common/models",
      "loopback/server/models",
      "../common/models",
      "./models"
    ],
    "mixins": [
      "loopback/common/mixins",
      "loopback/server/mixins",
      "../common/mixins",
      "./mixins"
    ]
  },
  "Container": {
    "dataSource": "storage",
    "public": true
  }
}

Ниже приведен контейнер (для загрузки / скачивания файлов)

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

И следующий мой сценарий для обновления модели, скажем, адрес

var server = require('./../../server');
var ds = server.dataSources.school;
var tables = ['Address'];
ds.autoupdate(tables, function(er,result) {
  if (er) throw er;

  ds.discoverModelProperties('Address', function (err, props) {
    console.log(props);
  });

  ds.disconnect();
});

Может кто-нибудь, пожалуйста, помогите мне в выяснении проблемы, почему компонент хранения выдает исключение, что каталог файлов не существует

Автор: Fakhar Zaman Источник Размещён: 08.01.2018 07:03

Ответы (4)


0 плюса

2279 Репутация автора

Я думаю, что проблема в корневом параметре,

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

Пожалуйста, обратитесь: Ссылка

https://strongloop.com/strongblog/working-with-file-storage-and-loopback/

Автор: IftekharDani Размещён: 08.01.2018 07:10

0 плюса

103 Репутация автора

Попробуйте добавить это в server.js

var ds = loopback.createDataSource({
    connector: require('loopback-component-storage'),
    provider: 'filesystem',
    root: 'server/files'
});

var storage = ds.createModel('storage');
app.model(storage);

проверить документацию здесь тоже

Автор: Tom Размещён: 16.01.2018 01:38

0 плюса

11 Репутация автора

У вас есть папка с файлами, созданная внутри папки сервера?

Если нет? Вы должны создать папку с именем «файлы»

Если да? тогда ваше объявление пути может быть неверным. Попробуйте использовать полный путь, как это

"root": "/home/ubuntu/Documents/project/server/files"
Автор: Alfred Ignatius Размещён: 04.07.2018 01:59

0 плюса

4780 Репутация автора

Просто добавьте еще одну точку перед вашим корневым каталогом.

"root": "../server/files"

Проблема в том, что ваш скрипт обновления или миграции не может найти каталог. Для меня сценарий миграции находился в каталоге bin, и эта структура каталогов была на один уровень выше.

После завершения миграции вернитесь обратно.

Автор: Asad Khan Размещён: 15.05.2019 11:06
Вопросы из категории :
32x32