Retrieve the function location from it reference in NodeJS.
npm install @4djs/clientjavascript
// Import the Client contructor from the module
const { Client } = require('@4djs/client');
// Create a client instance with basic credentials
const c = new m.Client(
'http://localhost/rest', {
type: 'basic',
user: 'admin',
pass: 'admin'
},
{
ctx: { req, res },
},
);
// Create a client instance with token credentials
const c = new m.Client(
'http://localhost/rest', {
type: 'token',
token: 'admin',
authUrl: '/your-api/login'
},
{
ctx: { req, res },
},
);
// Get the catalog from client
const { ds } = await c.getCatalog();
`
$3
Suppose that we have a catalog containing a DataClass named Employee.
Running this Query:
`javascript
const collection = await ds.Employee.query('firstname == :1', 'Employee');
`
Looks for employees having Employee as a firstname.
$3
The NodeJS Client allows request chaining. As an example, if you run this request:
`javascript
const array = await ds.Employee
.query('firstname == :1', 'Employee')
.orderBy('firstname asc')
.skip(20).limit(5)
.toArray('ID, firstname, lastname, company.name');
`
It will:
* Sort the result in ascending order by firstname
* Skip 20 entities
* Limit the result to 5 entities
* Converts the result to an array
* Selects the specified attributes
To optimize performance, the client will prepare the request in the client side (NodeJS), and sends only one request to 4D.
$3
Creating an entity is as simple as:
`javascript
const entity = new ds.Employee({ firstname: 'Employee' });
await entity.save();
`
$3
To run a DataClass method:
`javascript
const result = await ds.Employee.dataclassMethod('param');
`
And this is how we can execute an entity method
`javascript
const entity = await ds.Employee.find('ID = :1', 10108, {
$attributes: 'ID',
});
const result = await entity.getFullName();
`
In the example above:
* We retrieve an employee having the ID 10108 and we select only its ID attribute
* We execute the entity method named getFullName
$3
`javascript
const entity = await ds.Employee.find('ID = :1', 10108);
const employer = entity.employer;
await employer.refresh();
`
In the example above :
* We retrieve an employee having the ID 10108 and we select only its ID attribute
* We get the related entity/entities attribute (we get an instance of Employee / EmployeeCollection)
* We load the related entity/entities from database
Compiling the typescript code
`shell
npm i # Will install the NodeJS dependencies
npm run build # Will transpile the code into javascript code
`
Another option is to run this command
`shell
npm run dev
``