Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@4djs/client

Package Overview
Dependencies
Maintainers
2
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@4djs/client

Retrieve the function location from it reference in NodeJS.

  • 0.3.2
  • latest
  • npm
  • Socket score

Version published
Maintainers
2
Created
Source

@4djs/client

A NodeJS connector for 4D bases

How to use

Create a client

// Import the Client contructor from the module
const { Client } = require('@4djs/client');

// Create a client instance
const c = new m.Client(
  'http://localhost/rest', {
    user: 'admin',
    pass: 'admin'
  },
  { 
    ctx: { req, res },
    hashPwd: false, // (default true)
  },

);

// Get the catalog from client
const { ds } = await c.getCatalog();

Querying a table

Suppose that we have a catalog containing a DataClass named Employee.

Running this Query:

const collection = await ds.Employee.query('firstname == :1', 'Employee');

Looks for employees having Employee as a firstname.

Requests chaining

The NodeJS Client allows request chaining. As an example, if you run this request:

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.

Create entity

Creating an entity is as simple as:

const entity = new ds.Employee({ firstname: 'Employee' });
await entity.save();

execute 4D methods

To run a DataClass method:

const result = await ds.Employee.dataclassMethod('param');

And this is how we can execute an entity method

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
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

npm i # Will install the NodeJS dependencies
npm run build # Will transpile the code into javascript code

Another option is to run this command

npm run dev

This command will watch the typescript changes, then it will transpile the code to javascript

Keywords

FAQs

Package last updated on 07 Nov 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc