knex-soql
v0.6.2
Published
Knex.js dialect for building and executing Salesforce Queries (SOQL)
Downloads
1,064
Readme
SOQL Dialect for Knex.js
Knex.js dialect for building and executing Salesforce Queries (SOQL)
Install
npm install knex-soql
Usage
const client = require('knex-soql');
const knex = require('knex')({
client,
connection: {
loginUrl: 'https://test.salesforce.com',
login: '[email protected]',
password: 'supersecret'
}
});
const contacts = await knex('Contact')
.select(['Id', 'Name'])
.where({ Name: 'example' })
.orderBy('CreatedBy')
.limit(10);
Connection
All queries to Salesforce are performed using jsforce and all the connection properties passed down to jsforce.Connection constructor:
const client = require('knex-soql');
const knex = require('knex')({
client,
connection: {
oauth2: {
clientId: '<your Salesforce OAuth2 client ID is here>',
clientSecret: '<your Salesforce OAuth2 client secret is here>',
redirectUri: '<your Salesforce OAuth2 redirect URI is here>'
},
instanceUrl: '<your Salesforce server URL (e.g. https://na1.salesforce.com) is here>',
accessToken: '<your Salesforrce OAuth2 access token is here>',
refreshToken: '<your Salesforce OAuth2 refresh token is here>'
}
});
Or you can even provide jsforce.Connection instance configured by yourself to knex along with knex-soql client:
const client = require('knex-soql');
const jsforce = require('jsforce');
const initKnex = require('knex');
const execute = async () => {
const connection = new jsforce.Connection();
await connection.login('[email protected]', 'supersecret');
const knex = initKnex({ client, connection });
const contacts = await knex('Contact').select(['Id', 'Name']);
};
execute();
Query Builder
You can use knex-soql to build SOQL queries without execution:
const client = require('knex-soql');
const knex = require('knex')({ client });
const subquery = knex('Account.Contacts')
.select(['Contact.Id', 'Contact.Name'])
.orderBy('LastModifiedDate', 'desc')
.limit(3);
const query = knex('Account')
.select(['Id', 'Name', subquery])
.where({ Id: '1337' });
console.log(query.toString());
/*
select Id, Name, (
select Contact.Id, Contact.Name
from Account.Contacts
order by LastModifiedDate desc
limit 3
)
from Account
where Id = '1337'
*/
Credits
Copyright and License
Copyright Yevhenii Baraniuk, 2017