LoopBack Connector for IBM dashDB
npm install loopback-connector-dashdb[IBM® DashDB®]() is the database of choice for robust, enterprise-wide solutions handling high-volume workloads.
It is optimized to deliver industry-leading performance while lowering costs. The loopback-connector-dashdb
module is the LoopBack connector for dashDB.
The LoopBack DashDB connector supports:
- All CRUD operations.
- Queries with fields, limit, order, skip and where filters.
- All supported DASHDB LUW versions as well as dashDB. Note for dashDB set supportDashDB in the loopback datasource definition. Column organized tables are not supported.
Enter the following in the top-level directory of your LoopBack application:
```
$ npm install loopback-connector-dashdb --save
The --save option adds the dependency to the application's package.json file.
Use the data source generator (lb datasource) to add the DASHDB data source to your application.server/datasources.json
The entry in the application's will look something like this:
``
"mydb": {
"name": "mydb",
"connector": "dashdb"
}
Edit server/datasources.json to add other supported properties as required:
``
"mydb": {
"name": "mydb",
"connector": "dashdb",
"username":
"password":
"database":
"hostname":
"port":
}
The following table describes the connector properties.
Property | Type | Description
---------------| --------| --------
database | String | Database name
schema | String | Specifies the default schema name that is used to qualify unqualified database objects in dynamically prepared SQL statements. The value of this property sets the value in the CURRENT SCHEMA special register on the database server. The schema name is case-sensitive, and must be specified in uppercase characters
username | String | DASHDB Username
password | String | DASHDB password associated with the username above
hostname | String | DASHDB server hostname or IP address
port | String | DASHDB server TCP port number
useLimitOffset | Boolean | LIMIT and OFFSET must be configured on the DASHDB server before use (compatibility mode)
supportDashDB | Boolean | Create ROW ORGANIZED tables to support dashDB.
minPoolSize | Number | Set the minimum size of the connection pool |
maxPoolSize | Number | Set the maximum size of the connection pool |
Alternatively, you can create and configure the data source in JavaScript code.
For example:
`
var DataSource = require('loopback-datasource-juggler').DataSource;
var DASHDB = require('loopback-connector-dashdb');
var config = {
username: process.env.DASHDB_USERNAME,
password: process.env.DASHDB_PASSWORD,
hostname: process.env.DASHDB_HOSTNAME,
port: 50000,
database: 'SQLDB',
};
var db = new DataSource(DASHDB, config);
var User = db.define('User', {
name: { type: String },
email: { type: String },
});
db.autoupdate('User', function(err) {
if (err) {
console.log(err);
return;
}
User.create({
name: 'Tony',
email: 'tony@t.com',
}, function(err, user) {
console.log(err, user);
});
User.find({ where: { name: 'Tony' }}, function(err, users) {
console.log(err, users);
});
User.destroyAll(function() {
console.log('example complete');
});
});
`
Here is a list of operators supported by the connector:
- regexp operator`js`
Employee.find({where: {taskCode: {regexp: /tsk/i}}}, function(err, result) {
if (err) throw err;
console.log('Found instance with regexp: ' + JSON.stringify(result));
});
- like operator`js`
Employee.find({where: {taskCode: {like: 'TSK%'}}}, function(err, result) {
if (err) throw err;
console.log('Found instance with like: ' + JSON.stringify(result));
});
- nlike operator`js`
Employee.find({where: {taskCode: {nlike: 'TSK%'}}}, function(err, result) {
if (err) throw err;
console.log('Found instance with like: ' + JSON.stringify(result));
});
If you have a local or remote DashDB instance and would like to use that to run the test suite, use the following command:
- Linux
`bash`
DASHDB_HOSTNAME=`
- Windowsbash`
SET DASHDB_HOSTNAME=
SET DASHDB_PORTNUM=
SET DASHDB_USERNAME=
SET DASHDB_PASSWORD=
SET DASHDB_DATABASE=
SET DASHDB_SCHEMA=
SET CI=true
npm test
The value for DASHDB_SCHEMA must be of the pattern SCHEMA{build number}_{build name}_{platform}_{node version}.
For example : SCHEMA1_DASHDB_DARWIN_10.
Alternatively, let DASHDB_SCHEMA be computed for you by setting these values instead:
`bash``
export PACKAGE_NAME=loopback-connector-dashdb
export BUILD_NUMBER={build number} For example: 1
export nodeVersion={node version} For example: 10
This will create a schema with the name: SCHEMA1_DASHDB_DARWIN_10
This pattern of the schema name is important for database cleanup and seeding purposes.