Dynamic Datasource
This module allows dynamic creation of datasources during system runtime, thereby managing third-party database data
Installing the module
bash
$ pnpm add vona-module-a-datasource -wCreate datasource
The module stores the dynamically created datasource in the data table
typescript
const entityDatasource = await this.bean.datasource.create({
title: 'test001',
config: {
client: 'pg',
connection: {
host: '127.0.0.1',
port: 5432,
user: 'postgres',
password: '',
database: 'xxxx',
},
},
});bean.datasource: Global service instance provided by the module
Using datasource
1. General usage
typescript
const db = await this.bean.datasource.getDb({ id: entityDatasource.id });
const modelTest = this.scope.model.test.newInstance(db);
const items = await modelTest.select();getDb: Get the datasource objectnewInstance: Passes the datasource object and returns a new model instance
2. Transaction
typescript
const db = await this.bean.datasource.getDb({ id: entityDatasource.id });
const modelTest = this.scope.model.test.newInstance(db);
await db.transaction.begin(async () => {
const item = await modelTest.insert({ title: 'test' });
await modelTest.delete(item);
});db.transaction.begin: Start a database transaction on db
Update datasource
typescript
await this.bean.datasource.update({
id: entityDatasource.id,
config: {
client: 'pg',
connection: {
host: '127.0.0.1',
port: 5432,
user: 'postgres-new',
password: 'new',
database: 'xxxx-new',
},
},
});update: This operation performs the following logic:- Updates the data in the data table
- Updates the status of the datasource object that has been created in the system
Delete datasource
typescript
await this.bean.datasource.remove(entityDatasource.id);remove: This operation performs the following logic:- Deletes the data in the data table
- Dispose the datasource object that has been created in the system