A newer version of this documentation is available.

View Latest

Creating a User-Defined Function

      +

      Introduction

      Creating the N1QL User-Defined Function

      Before you can run the JavaScript function you have created (see Creating a JavaScript Library), you will need to create a N1QL User-Defined Function to reference it. You can create a N1QL User-Defined Function by using:

      For more information on N1QL User Defined Functions in general, read User-Defined Functions

      • Query Workbench

      • REST API

      • N1QL

      1. Access the UDF screen from the administration console.

        navigate to udf query
      2. Click on the + add function link from the UDFs screen.

        library list

        which will display the Add Function screen.

        add function dialog
      3. Use the Namespace drop-down lists to select the bucket and scope where your Javascript function resides.

      4. Fill in the Function Name of your N1QL User-Defined Function.

      5. Leave the Parameters as they are.

        The …​ in the parameters box denotes a variable length list of parameters. This is why you don’t have to fill in this field.
      6. Select Javascript for the function type. A field will appear in the dialog with a list of available libraries in the namespace you selected.

        add function dialog switch to javascript

        From this list select the library containing your function.

      7. Enter the name of the JavaScript function in the Library Function Name field.

      Run a curl command from the shell to add a N1QL User-Defined Function that calls your Javascript function.

      curl -v http://localhost:8093/query/service \
        -u Administrator:password \
        -d 'statement=CREATE FUNCTION default:`travel-sample`.inventory.GetBusinessDays(...)
        LANGUAGE JAVASCRIPT as "getBusinessDays" AT "travel-sample/inventory/my-library"'

      Execute the CREATE FUNCTION in the CBQ Shell to create the N1QL User-Defined Function:

      CREATE FUNCTION default:`travel-sample`.`inventory`.GetBusinessDays(...) LANGUAGE JAVASCRIPT as "getBusinessDays" AT "travel-sample/inventory/my-library";
      The N1QL User-Defined Function will take the same scope as the JavaScript UDF it is referencing.

      Having created your N1QL User-Defined Function, the next step is to use N1QL statement to call the function.