Search code examples
titanrexster

How to POST / PUT edge with number property?


I am using Rexster to load data into a TitanDB. When posting / putting vertices, I can provide properties as JSON in the request's body. If a property's value is a number, it will correspondingly be stored as a number and can be retrieved as such. For example, the following body will in a post message will create a property "score" of type number:

{
  "score": 5
}

When POSTing / PUTing edges, though, it seems properties can only be provided as query parameters, e.g.:

POST .../graphs/graph/edges?_outV=256&_label=review&_inV=512&score=5

In this case, unfortunately, the 5 is always considered as a string: "5". Consequently, queries including numeric operations / comparisons do not work. For example, the following query will still return the posted edge (despite the posted score being 5):

v(256).outE('review').filter{it.getProperty('score')>9}

Is there a way to POST / PUT edges and their properties so that the number type is considered?


Solution

  • I was reasonably sure you could POST JSON to the edge route, but even if you can't, you can use Rexster's explicit type system to post your integer properly:

    $ curl -X POST "http://localhost:8182/graphs/tinkergraph/edges?_outV=1&_inV=2&_label=knows&score=(i,5)"
    
    {
      "version":"2.7.0-SNAPSHOT",
      "results": {
        "score":5,"_id":"0","_type":"edge","_outV":"1","_inV":"2","_label":"knows"
      },
      "queryTime":31.79554
    }