You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by nithin91 <ni...@franklintempleton.com> on 2020/02/10 19:59:17 UTC

REST API on top of ignite using node express

Hi ,

We are trying to build an Rest API on top of ignite cache using node
express.

Following is the way we are fetching data from ignite.

await igniteClient.connect(new IgniteClientConfiguration(ENDPOINT));
const cache = igniteClient.getCache(CacheNAME);

const querysql=new SqlFieldsQuery("SqL");
const cursor = await cache.query(querysql);
const row =await  cursorProductDetails.getValue();

We are facing the following issues while fetching the data in cursor.

1. cursor._values property is always having only 1024 rows even though the
table as 100k rows.
2. cursor._fieldnames  property  is not displaying the field names as result
of which we have created an 
array with list of fields and creating a list of json objects using this
array and  traversing each row of cursor._values using map function.

Please check below for sample code

var dataProductDetails=cursor._values ;

var res_data_prddetails=[];

 var fields=[field1,field2]
    
        await dataProductDetails.map(function(arr){
                                 var prdobj={};
                                 fields.forEach((k,v)=> prdobj[k]=arr[v]);
                                 res_data_prddetails.push(prdobj);
                               }
                                    
                               
          );

Also can you please let me know whether there is a way to directly convert
the sql fields query output to JSON using node express.

















--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Re: REST API on top of ignite using node express

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

* I have just tried modifying this example:
https://github.com/apache/ignite/blob/master/modules/platforms/nodejs/examples/SqlExample.js
and it was able to list all 4000+ cities from City table with no problems
(mind the SQL file in examples directory shipped with Ignite). What version
are you using? Can you provide complete reproducer together with data?

* To get field names in cursor, you first have to do
query.setIncludeFieldNames(true). By default you are not getting them.

Regards,
-- 
Ilya Kasnacheev


пн, 10 февр. 2020 г. в 22:59, nithin91 <
nithinbharadwaj.govindaraju@franklintempleton.com>:

> Hi ,
>
> We are trying to build an Rest API on top of ignite cache using node
> express.
>
> Following is the way we are fetching data from ignite.
>
> await igniteClient.connect(new IgniteClientConfiguration(ENDPOINT));
> const cache = igniteClient.getCache(CacheNAME);
>
> const querysql=new SqlFieldsQuery("SqL");
> const cursor = await cache.query(querysql);
> const row =await  cursorProductDetails.getValue();
>
> We are facing the following issues while fetching the data in cursor.
>
> 1. cursor._values property is always having only 1024 rows even though the
> table as 100k rows.
> 2. cursor._fieldnames  property  is not displaying the field names as
> result
> of which we have created an
> array with list of fields and creating a list of json objects using this
> array and  traversing each row of cursor._values using map function.
>
> Please check below for sample code
>
> var dataProductDetails=cursor._values ;
>
> var res_data_prddetails=[];
>
>  var fields=[field1,field2]
>
>         await dataProductDetails.map(function(arr){
>                                  var prdobj={};
>                                  fields.forEach((k,v)=> prdobj[k]=arr[v]);
>                                  res_data_prddetails.push(prdobj);
>                                }
>
>
>           );
>
> Also can you please let me know whether there is a way to directly convert
> the sql fields query output to JSON using node express.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>

Re: REST API on top of ignite using node express

Posted by Denis Magda <dm...@apache.org>.
Hi Nithin,

1. You can use Query.setPageSize method to instruct the Cursor to read the
result set in chunks bigger than 1024. However, regardless of the pageSize
the Cursor returns the whole result:
https://github.com/apache/ignite/blob/master/modules/platforms/nodejs/lib/Query.js#L56

2. That's how cursor._fieldnames are implemented:
https://github.com/apache/ignite/blob/master/modules/platforms/nodejs/lib/Cursor.js#L264

-
Denis


On Mon, Feb 10, 2020 at 11:59 AM nithin91 <
nithinbharadwaj.govindaraju@franklintempleton.com> wrote:

> Hi ,
>
> We are trying to build an Rest API on top of ignite cache using node
> express.
>
> Following is the way we are fetching data from ignite.
>
> await igniteClient.connect(new IgniteClientConfiguration(ENDPOINT));
> const cache = igniteClient.getCache(CacheNAME);
>
> const querysql=new SqlFieldsQuery("SqL");
> const cursor = await cache.query(querysql);
> const row =await  cursorProductDetails.getValue();
>
> We are facing the following issues while fetching the data in cursor.
>
> 1. cursor._values property is always having only 1024 rows even though the
> table as 100k rows.
> 2. cursor._fieldnames  property  is not displaying the field names as
> result
> of which we have created an
> array with list of fields and creating a list of json objects using this
> array and  traversing each row of cursor._values using map function.
>
> Please check below for sample code
>
> var dataProductDetails=cursor._values ;
>
> var res_data_prddetails=[];
>
>  var fields=[field1,field2]
>
>         await dataProductDetails.map(function(arr){
>                                  var prdobj={};
>                                  fields.forEach((k,v)=> prdobj[k]=arr[v]);
>                                  res_data_prddetails.push(prdobj);
>                                }
>
>
>           );
>
> Also can you please let me know whether there is a way to directly convert
> the sql fields query output to JSON using node express.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>