配置项注册

调用方式:app.config

ibird提供很多配置项供开发者注册,注册项列表如下所示:

  • name:应用名称
  • port:应用监听端口
  • mongo:MongoDB连接信息
  • static:静态目录
  • middleware:中间件
  • multipart:是否解析文件上传请求
  • uploadPath:文件上传目录
  • prefix:全局接口前缀
  • defaultApiPrefix:设置默认生成的API的前缀,以斜杠开头,不以斜杠结尾,如/schema,默认为空
  • cross:是否允许跨域
  • model:模型对象
  • route:自定义路由集合
  • trigger:触发器
  • logger:日志实例对象,通过日志模块ibird-log注入,可选
  • i18n:国际化模块对象,可通过国际化模块ibird-i18n的API进行操作,默认内置国际化模块
  • logicallyDeleted:开启逻辑删除,可设定值来指定逻辑字段的编码,默认字段编码为_dr,字段统一为布尔类型,true表示已删除,反之表示未删除(包括空值)

配置项支持单个注册,也支持批量注册:

const path = require('path');
const app = require('ibird-core');
// 单个注册
app.config('port', 3001);
// 批量注册
app.config({
    name: 'ibird管理应用',
    port: 3000,
    redis: '127.0.0.1:6379',
    mongo: 'mongodb://127.0.0.1:27017/ibird',
    static: {
        '/public': path.resolve(process.cwd(), 'public'),
        '/admin': path.resolve(process.cwd(), 'admin/dist'),
    },
    multipart: true,
    uploadPath: path.resolve(process.cwd(), 'public'),
    prefix: '/api',
    cross: false,
    trigger: {}
});
// 获取所有配置项
app.config();

应用名称

参数名:name

该配置项决定应用的显示名称,包括显示在接口与日志中。若需要国际化处理,则该处应按国际化参数配置:

const i18n = require('ibird-i18n');

//常规配置
app.config('name', '企业信息系统');
//或者 指定国际化key
app.config('name', i18n.get('i18n_app_name'));

Tips:有关国际化配置的详情,请参考国际化处理章节

监听端口

参数名:port

默认端口为3000,如需修改,设置该配置项为新端口号即可:

app.config('port', 3001);

MongoDB连接信息

参数名:mongo

可指定连接字符串,也可为连接字符串配置连接参数:

//配置连接字符串
app.config('mongo', 'mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]');
app.config('mongo', 'mongodb://127.0.0.1:27017/ibird');
app.config('mongo', 'mongodb://user:pass@localhost:port/database');
app.config('mongo', 'mongodb://user:pass@localhost:port,anotherhost:port,yetanother:port/mydatabase');

//配置连接参数
app.config('mongo', {
    uri: 'mongodb://hostA:27501,hostB:27501',
    opts: {mongos: true}
});

静态目录

参数名:static

应用开发中往往存在静态资源文件,这些文件一般都放在一个或多个目录下,而这些目录都可以通过配置开放出去:

app.config('static', {
    '访问虚拟目录,需要以/开头': '本地目录',
    '/public': path.resolve(process.cwd(), 'public'),
    '/admin': path.resolve(process.cwd(), 'admin/dist')
});

文件上传

参数名:multipart

如果需要解析接口请求中的文件数据,需要将此项设置为true,还必须指定上传目录(uploadPath),上传目录必须通过静态目录开放前端才能正常访问:

app.config('multipart', 'true');

上传目录

参数名:uploadPath

该目录指定通过接口上传的文件在本地的存放目录:

app.config('uploadPath', path.resolve(process.cwd(), 'public'));

自定义上传配置

参数名:formidable

如果你需要完全自定义对上传文件的处理,你可以指定该参数(以下是默认配置,如果配置项存在自定义配置,那么对应的默认配置会被覆盖):

app.config('formidable', {
                keepExtensions: true,
                uploadDir: config.uploadPath,
                hash: 'sha1'
            });

Tips:这里可以指定node-formidable的所有配置项

全局接口前缀

参数名:prefix

指定模型默认挂载的接口或开发者手动挂载的接口的接口前缀:

// 假设存在已挂载的路由接口:/user

// 默认为 /api
app.config('prefix', '/api');// 前端访问接口地址变为:http://127.0.0.1:3000/api/user
// 设置前缀为 /admin/v2
app.config('prefix', '/admin/v2');// 前端访问接口地址变为:http://127.0.0.1:3000/admin/v2/user
// 不设置前缀
app.config('prefix', '');// 前端访问接口地址变为:http://127.0.0.1:3000/user

是否允许跨域

参数名:cross

设置该项参数为true可让接口允许跨域访问,默认为false。也可设置为对象类型,指定kcors的选项:

// 所有接口支持跨域访问
app.config('cross', true);
// 所有接口不允许跨域访问
app.config('cross', false);// 默认
// 指定参数
app.config('cross', {
    allowMethods: ['GET', 'PUT', 'POST']
});

模型对象

参数名:model

在成功调用模型注册的内部接口后,模型会被注册到该对象中,以模型编码为键,数据模型为值:

// 获取模型集合:Object类型
app.config().model;
// 获取指定模型
const Blog = app.config().model.blog;
// 或
const Blog = app.config().model['blog'];

Tips:模型对象为键值对的Object类型,标准的JavaScript Object对象。

路由集合

参数名:route

在成功调用路由挂载的内部接口后,路由会被添加到该集合中,在应用启动时,所有路由会按照配置依次挂载:

// 获取集合集合:Array类型
app.config().route;

results matching ""

    No results matching ""