Storage component (存储组件)

  • 简介
  • 安装
    • 案例
  • Containers 和 文件
  • 创建一个存储组件的数据源
    • 使用命令行工具和JSON
    • 使用 JavaScript配置
    • 提供凭据

简介

存储组件 能够使得应用方便的上传,下载 与 云存储提供商和本地服务器。

它有 Node.js 和 REST API 存储管理二进制内容,支持的云供应商有:

  1. 亚马逊
  2. Rackspace公司
  3. OpenStack
  4. Azure

使用 存储组件能够像 其他 loopback datasource 一样操作一个数据库。
像其他数据源,它支持创建,读取,更新和删除 (CRUD)操作和 其对应的REST API。

此组件没有提供,开箱即用的方法,使用案例参照案例

安装

安装命令:

  1. npm install loopback-component-storage
案例

案例github地址: https://github.com/strongloop/loopback-example-storage

默认使用 example-2.0目录 为 loopback 2.0 提供案例, example 目录 为 loopback 1.0 使用的案例

Containers and files 容器与文件

存储组件 通过 容器和文档 组织内容, 一个容器持有相关联的文档,遍历隶属于它的相关文件。

  • Container(容器)
    • 文件归组,类似一个目录或者 folder(??)
    • 容器定义的命名空间对象,并通过它的名字唯一标识,通常在一个用户帐户
    • 注意: 容器无法拥有子容器
  • files(文件单元)
    • 存储数据, 如文档或图像. 文件是始终在一个(也是唯一一个)容器.
    • 在一个容器中, 文件名必须是唯一的。

创建一个存储组件的数据源

创建工具: https://docs.strongloop.com/display/APIC/Command-line+reference

可以使用 命令行工具 或者 /server/datasources.json在JavaScript文件 创建.

使用命令行工具和JSON
  1. slc loopback:datasource
  2. # OR
  3. apic create --type datasource

然后编辑/server/datasources.json并手动添加数据源的属性,

  1. // 本地数据
  2. "storage": {
  3. "name": "storage",
  4. "connector": "loopback-component-storage",
  5. "provider": "filesystem", // 供应商:“文件系统”
  6. "root": "./server/storage" // 路径
  7. }
  8. // 远程案例
  9. "myfile": {
  10. "name": "myfile",
  11. "connector": "loopback-component-storage",
  12. "provider": "amazon", //其他相关配置
  13. "key": "your amazon key",
  14. "keyId": "your amazon key id"
  15. }
使用 JavaScript配置

server/server.js 中使用 loopback.createDataSource()方法创建存储组件数据源.

  1. // 本地
  2. var ds = loopback.createDataSource({
  3. connector: require('loopback-component-storage'),
  4. provider: 'filesystem',
  5. root: path.join(__dirname, 'storage')
  6. });
  7. var container = ds.createModel('container');
  8. // 远程
  9. var ds = loopback.createDataSource({
  10. connector: require('loopback-component-storage'),
  11. provider: 'amazon',
  12. key: 'your amazon key',
  13. keyId: 'your amazon key id'
  14. });
  15. var container = ds.createModel('container');
  16. app.model(container);
其他创建文件

/server/model-config.json 增加配置

  1. // 增加 container 的 model
  2. "container": {
  3. "dataSource": "storage",
  4. "public": true
  5. }

/server/models/container.json 相关 model 配置

  1. {
  2. "name": "container",
  3. "base": "Model",
  4. "properties": {},
  5. "validations": [],
  6. "relations": {},
  7. "acls": [],
  8. "methods": []
  9. }

/server/models/container.js 相关逻辑编程

  1. module.exports = function(Container) {
  2. };
提供凭据

具体配置项参照 官网地址 https://docs.strongloop.com/display/public/LB/Storage+component