配置项注册
调用方式: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;