Javascript in Cloud Functions
Not all nodes are available to cloud functions but in terms of writing Javascript the Function and Expression nodes are available. However there are some caveats, most notably when deployed cloud functions are not running in a browser they are running in the cloud and they have a much more limited runtime environment. This means that you cannot access most of the browser APIs, the cloud runtime is limited to:
-
Core Javascript Objects and Functions The Javascript language contains a set of core objects and functions that are all available to the cloud runtime. More info here.
-
The Noodl API A subset of the Noodl API is available to cloud functions. Read more about the Noodl APIs here. Some of the functions and objects are labeled Only available on the frontend and some are labeled as Only available in cloud functions, the rest are shared between frontend and cloud functions.
Fetch
A subset of the Fetch API available on the browser also works in cloud functions, which is very useful for making HTTP requests to external services.
fetch(url,options)
The Fetch API first takes the endpoint of the HTTP request and then an object with options. Here are a few examples, first making a simple POST request to an endpoint:
const res = await fetch("https://some-endpoint",{
method:'POST',
headers:{
'content-type':'application/json'
},
body:JSON.stringify({
someParameters:"hello"
})
})
if(res.ok) {
Outputs.Success()
}
else Outputs.Failure()
The Request Object
In Javascript in your cloud functions you can access the request object containing data on the current request being handled.
const request = Noodl.Objects.Request;
request.UserId // Contains the user if of the user that called the cloud function, if authenticated
request.Authenticated // Will be true if this call is authenticated
request.Parameters // An object with the parameters of the current cloud function request
request.Headers // An object with the HTTP headers of the current cloud function request