|
1 | | -# loopback-connector-ibmi |
2 | | - |
3 | | -This is a database connectior for Db2 on IBM i intended for use with LoopBack 3 (LoopBack 4 testing soon). It uses the npm `odbc` package to connect to the database, so installing an ODBC driver manager and driver and setting up a datasource is required for use (see below). |
4 | | - |
5 | | -## Major differences from version 0.x of loopback-connector-ibmi |
6 | | -This version of the module is significantly different from version 0.x and constitutes a complete rewrite. This project is a derivative of [loopback-connector-db2iseries](https://github.com/strongloop/loopback-connector-db2iseries) and the v0.x [loopback-connector-ibmi](https://github.com/andrescolodrero/loopback-connector-ibmi). |
7 | | - |
8 | | -The main difference between this and the other packages for IBM i (including v0.x of this package) is that it uses ODBC to communicate to the database. Version 0.x of this package was built using the Db2 for i CLI API set, hence the need for important prerequisites (below). |
9 | | - |
10 | | -## Prerequisites |
11 | | -Before installing this package, you will need an ODBC driver and a driver manager (with development libraries). |
12 | | -This package is primarily developed and tested with the IBM i Access ODBC driver, which is supported as part of IBM i software maintenance agreements (SWMA) and comes with no additional licensing fees. |
13 | | - |
14 | | -### On IBM i |
15 | | -- Install the `unixODBC-devel` package. See [the RPM and yum documentation for IBM i](http://ibm.biz/ibmi-rpms) for more detailed steps. |
16 | | -### On Linux |
17 | | -- Install the `unixODBC-devel` package with your operating system's package manager (apt-get, zypper, yum, etc). |
18 | | -- Install the "Linux Application Package" of IBM i Access Client Solutions. Consult [this document](http://www-01.ibm.com/support/docview.wss?uid=nas8N1010355) for assistance. |
19 | | -### On Windows |
20 | | -- Install the "Windows Application Package" of IBM i Access Client Solutions. Consult [this document](http://www-01.ibm.com/support/docview.wss?uid=nas8N1010355) for assistance. |
21 | | - |
22 | | - |
23 | | -## Installation |
24 | | -Once the prerequisites are satisfied, enter the following in the top-level directory of your LoopBack application and install this package: |
25 | | - |
26 | | -``` |
27 | | -$ npm install loopback-connector-ibmi |
28 | | -``` |
29 | | - |
30 | | -## Configuration |
31 | | - |
32 | | -In LoopBack, datasources are used to store the information about your database so it can be used by the program. Use the [data source generator](https://loopback.io/doc/en/lb3/Data-source-generator.html) to add to your application: |
33 | | - |
34 | | -``` |
35 | | -lb datasource |
36 | | -``` |
37 | | - |
38 | | -The datasource generator will then walk you through the process of setting up a datasource: |
39 | | -1. `Enter the datasource name:` Any name will do, such as the name of the schema you will use or the name of your system. |
40 | | -2. `Select connector for <name>:` LoopBack 3 does not have knowledge of `loopback-connector-ibmi`, so just press up on the arrow key once and select `other`. |
41 | | -3. `Enter the connector's module name:` Enter `loopback-connector-ibmi`. |
42 | | -4. `Install loopback-connector-ibmi`: If you haven't installed it, enter `Y`. If you have already installed it, select `n`. |
43 | | - |
44 | | -This will generate an entry in your `server/datasources.json` file. It should know have an entry similar to: |
45 | | - |
46 | | -```json |
47 | | - "test": { |
48 | | - "name": "test", |
49 | | - "connector": "loopback-connector-ibmi" |
50 | | - } |
51 | | - ``` |
52 | | -You should edit this entry to add information on how to connect to Db2. For `loopback-connector-ibmi`, you need to pass either a `connectionString`, or pass your `username`, `password`, and `dsn` (which will be the DSN name you set up for your ODBC driver). |
53 | | - |
54 | | -```json |
55 | | -"test": { |
56 | | - "name": "test", |
57 | | - "connector": "loopback-connector-ibmi", |
58 | | - "connectionString": "DSN=MYDSN" |
59 | | -} |
60 | | -``` |
61 | | - |
62 | | -or |
63 | | - |
64 | | -```json |
65 | | -"test": { |
66 | | - "name": "test", |
67 | | - "connector": "loopback-connector-ibmi", |
68 | | - "dsn": "MYDSN", |
69 | | - "username": "FIRSTLAST", |
70 | | - "password": "password123" |
71 | | -} |
72 | | -``` |
73 | | - |
74 | | -The following table describes the connector properties. |
75 | | - |
76 | | -Property| Type | Description |
77 | | ----| --------| -------- |
78 | | -connectionString | String | ODBC connection string for connecting to the database |
79 | | -dsn | String | ODBC DSN to use for the connection |
80 | | -username | String | Username on the IBM i |
81 | | -password | String | Password on the IBM i |
82 | | -schema | String | Specifies the default schema name that is used to qualify unqualified database objects in dynamically prepared SQL statements. The schema name is case-sensitive. |
83 | | - |
84 | | -**More connector properties will be added as requested by the community** |
85 | | - |
86 | | -Alternatively, you can create and configure the data source in JavaScript code. |
87 | | -For example: |
88 | | - |
89 | | -```javascript |
90 | | -var DataSource = require('loopback-datasource-juggler').DataSource; |
91 | | -var DB2 = require('loopback-connector-ibmi'); |
92 | | - |
93 | | -var config = { |
94 | | - dsn: process.env.DSN |
95 | | - username: process.env.DB2_USERNAME, |
96 | | - password: process.env.DB2_PASSWORD, |
97 | | -}; |
98 | | - |
99 | | -var db = new DataSource(DB2, config); |
100 | | - |
101 | | -var User = db.define('User', { |
102 | | - name: { type: String }, |
103 | | - email: { type: String }, |
104 | | -}); |
105 | | - |
106 | | -// Will make sure that 'User' table has the same format as the model |
107 | | -db.autoupdate('User', function(err) { |
108 | | - if (err) { |
109 | | - console.log(err); |
110 | | - return; |
111 | | - } |
112 | | - |
113 | | - User.create({ |
114 | | - name: 'Tony', |
115 | | - email: 'tony@t.com', |
116 | | - }, function(err, user) { |
117 | | - console.log(err, user); |
118 | | - }); |
119 | | - |
120 | | - User.find({ where: { name: 'Tony' }}, function(err, users) { |
121 | | - console.log(err, users); |
122 | | - }); |
123 | | - |
124 | | - User.destroyAll(function() { |
125 | | - console.log('example complete'); |
126 | | - }); |
127 | | -}); |
128 | | -``` |
0 commit comments