今天讲一下Cube.js在後端是如何设定与资料库连线,以及如何在後端启动Cube.js Server。Cube.js支援多样的资料库连线,比方说Postgres, Oracle, MS SQL, MongoDB, ect. 我们公司使用的Db是Postgres,接下来会用它作为范例。
需要将以下内容添加到.env文件中,以连结Postgres资料库:
CUBEJS_DB_TYPE=postgres //DB类型
CUBEJS_DB_HOST=my.postgres.host //数据库的主机 URL
CUBEJS_DB_NAME=my_postgres_database //要连接的数据库的名称
CUBEJS_DB_USER=postgres_user //用於连接数据库的用户名
CUBEJS_DB_PASS=********** //用於连接数据库的密码
CUBEJS_DB_SS=true //是否启用 SSL 加密
有一个很便利的功能是,Cube.j预计新增可以连线多个资料库的多租户(Multitenancy)功能(官方宣告预计在10月27日上午 9-10:30举行研讨会),只要连线设定好,就可以同时取用多个资料库内的资料!可以用以下方式设定,虽然我们没有有使用到这个功能,但还是想稍微介绍一下,可以这麽使用:
const PostgresDriver = require('@cubejs-backend/postgres-driver');
const AthenaDriver = require('@cubejs-backend/athena-driver');
const BigQueryDriver = require('@cubejs-backend/bigquery-driver');
module.exports = {
dbType: ({ dataSource } = {}) => {
if (dataSource === 'web') {
return 'athena';
} else if (dataSource === 'googleAnalytics') {
return 'bigquery';
} else {
return 'postgres';
}
},
driverFactory: ({ dataSource } = {}) => {
if (dataSource === 'web') {
return new AthenaDriver();
} else if (dataSource === 'googleAnalytics') {
return new BigQueryDriver();
} else if (dataSource === 'financials') {
return new PostgresDriver({
database: 'financials',
host: 'financials-db.acme.com',
user: process.env.FINANCIALS_DB_USER,
password: process.env.FINANCIALS_DB_PASS,
});
} else {
return new PostgresDriver();
}
},
};
接下来可在後端开启一个index.js的档案
const CubejsServer = require('@cubejs-backend/server');
const server = new CubejsServer();
server.listen().then(({ version, port }) => {
console.log(`? Cube.js server (${version}) is listening on ${port}`);
});
当建立CubejsSverver()函数里面可以传入Cofig(设置),在Config里面可以设置很多配置,可以透过以下方式:
const options = {
logger: (msg, params) => {
...
},
checkAuth: async (req, auth) => {
...
},
...
}
const server = new Cube.jsServer(options)
可以参考这里的详细介绍
有一个比较需要注意的是,Cube.js可搭配Redis使用,但有可能会因为connection pool造成Timeout Error的问题,可以参考这篇
>>: EP28 - 使用 Container Insights 监控 EKS 上的容器,并整合 Grafana 作为仪表板
文章同步更新於https://kevinyay945.com/smart-home-tutorial...
在 bubble 中,每一个区段都可以新增一个 box,可以想像成 html 中的 div,而 bo...
本文是第二篇,有些变数的名词会沿用第一篇,建议看过再继续阅读唷! 谈论更深入一层前,先让我们复习一...
《赖田捕手:番外篇》第 36 天:用 Netlify 布署前端网页 (一) 那麽,你说你要一个完全免...
毕竟是云端服务,不像自己的电脑打开就能进行开发。 把服务部署到云端上,需要先透过SSH连线到服务器。...