loopback-connector-cloudant
Cloudant DB connector for the StrongLoop Loopback framework.
Please see the full documentation at loopback.io
Key Features
- Uses Cloudant Query (Lucene) to support ad-hoc searching
- Loopback Query support for: fields, limit, order, skip and where filters
- Query and filtering is performed on the database for optimal efficiency
- Use different DB instances per Model definition
- Support basic Model discovery
LoopBack Connectors
LoopBack provides connectors for popular relational and NoSQL databases. These connectors implement CRUD operations as a common set of methods across different databases and allow quick and easy API creation for new or existing datasources.
IBM Cloudant
IBM Cloudant® is a NoSQL database platform built for the cloud. You can use Cloudant as a fully-managed DBaaS running on public cloud platforms like Bluemix, SoftLayer or via an on-premise version called Cloudant Local.
Install
To install the connector cd into the top level directory of your loopback application, enter:
$ npm install loopback-connector-cloudant --save
The –save options automatically as the dependency to the package.json file
Configuring the Cloudant datasource
Use the Data source generator to add the Cloudant data source to your application. The entry in the applications /server/datasources.json will look something like this:
"mydb": {
"name": "mydb",
"connector": "cloudant",
"username": "XXXX-bluemix",
"password": "YYYYYYYYYYYY",
"database": "test"
}
Edit the datasources.json to add other supported properties as required:
Property | Type | Description |
---|---|---|
database | String | Database name |
username | String | Cloudant username, use either ‘url’ or username/password |
password | String | Cloudant password |
url | String | Cloudant URL containing both username and password |
modelIndex | String | Specify the model name to document mapping, defaults to ‘loopback__model__name’ |
NOTE: Please be aware that the url will override username/password.
Model Specific Configuration
Per Model configuration is also supported for database selection and to specify different Loopback Model to document mappings:
common/models/
{
"name": "User",
"base": "PersistedModel",
"idInjection": true,
...
"cloudant": {
"modelIndex": "custom_doc_type_property_name",
"modelSelector": { "doc_type": "user" },
"database": "test2"
},
...
Model specific configuration settings:
Property | Type | Description |
---|---|---|
database | String | Database name |
modelIndex | String | Specify the model name to document mapping, defaults to ‘loopback__model__name’. |
modelSelector | JSON | Use the Cloudant Query selector syntax to associate models to existing data. modelSelector and modelIndex are mutually exclusive. https://docs.cloudant.com/cloudant_query.html#selector-syntax |
Example Usage
var DataSource = require ('loopback-datasource-juggler').DataSource,
Cloudant = require ('loopback-connector-cloudant');
var config = {
username: 'XXXXX-bluemix',
password: 'YYYYYYYYYYYYY',
database: 'test'
};
var db = new DataSource (Cloudant, config);
User = db.define ('User', {
name: { type: String },
email: { type: String }
});
User.create ({
name: "Tony",
email: "tony@t.com"
}, function (err, user) {
console.log (user);
});
User.find ({ where: { name: "Tony" }}, function (err, users) {
console.log (users);
});
User.destroyAll (function () {
console.log ('test complete');
})
Feature Backlog
- Index only Model properties marked with index=true
- Configurable “view based” or JSON indexes. More Info»
Setup Cloudant Instance
There is no free version of local Cloudant to download, so to develop or test with cloudant connector, users can setup their instance in two ways:
Create Cloudant DBaaS account
- Limited days free trial
- Sign up with https://cloudant.com/sign-up/ then you will see your Cloudant dashboard
Setup Cloudant on Bluemix
-
Choose bluemix Cloudant if you already have a bluemix account with a better situation than limited-days’ free trial.
-
Setup steps:
- Open bluemix website: https://console.ng.bluemix.net
- Login with your account
- Click on “CATALOG” in navigation bar
- Search with keyword “cloudant” and choose the “Cloudant NOSQLDB” under “Data and Analytics”
- Click on the green button “create” in the popup page to create your Cloudant database
- Go to “DASHBOARD”, you will see your new cloudant DB Icon under “Services”
- Click on the Icon, it will direct you to the database page. Check “Service Credentials” on the left to see your credentials.
- Check “Manage” then click on button “LAUNCH” to see your Cloudant dashboard
For cloudant on both DBaaS and Bluemix, to get access to the cloudant dashboard, you can sign in https://cloudant.com/sign-in/ with your cloudant username and password.
Testing
After having Cloudant instance, you will need three config properties to run the tests: username
, password
, database
Cloudant DBaaS account
- username: your sign up username
- password: your sign up password
- database: create your own database for testing
Cloudant on Bluemix
- username: see services credentials
- password: see services credentials
- database: create your own database for testing
To run the tests:
CLOUDANT_USERNAME=username CLOUDANT_PASSWORD=password CLOUDANT_DATABASE=database npm test