Loopback + Невозможно инициализировать соединитель "loopback-component-storage"
Я использую петлевой компонент хранения "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();
});
Может кто-нибудь, пожалуйста, помогите мне разобраться в проблеме, почему компонент хранения выдает исключение, что каталог файлов не существует
3 ответа
Попробуйте добавить это в server.js
var ds = loopback.createDataSource({
connector: require('loopback-component-storage'),
provider: 'filesystem',
root: 'server/files'
});
var storage = ds.createModel('storage');
app.model(storage);
проверьте документацию здесь
Я думаю, что проблема в корневом параметре,
"storage": {
"name": "storage",
"connector": "loopback-component-storage",
"provider": "filesystem",
"root": "./files"
}
Пожалуйста, обратитесь: Ссылка
https://strongloop.com/strongblog/working-with-file-storage-and-loopback/
Просто добавьте еще одну точку перед корневым каталогом.
"root": "../server/files"
Проблема в том, что ваш сценарий обновления или миграции не может найти каталог. Для меня сценарий миграции находился в каталоге bin, и эта структура каталогов была на один уровень выше.
После завершения миграции вернитесь назад.
У вас есть папка с файлами, созданная внутри папки сервера?
Если нет? Вы должны создать папку с именем "файлы"
Если да? тогда ваше объявление пути может быть неверным. Попробуйте использовать полный путь, как это
"root": "/home/ubuntu/Documents/project/server/files"