[Huawei Developers] devwithzachary:
With Cloud Functions, you can configure a CLOUDDB trigger to call a function when data is entered, deleted, or modified in Cloud DB.

The Cloud DB service has been released with a JavaScript Server SDK, which can be used in the Node.js environment that the Cloud Functions service supports. In this article, I will elaborate on how to enter and query data with the Cloud DB JavaScript Server SDK in Cloud Functions.

Enabling Required Services​

You need to enable two services.

First of all, sign in to AppGallery Connect and perform the following operations:

Enable Cloud Functions. Click My projects, click your project card, and go to Build > Cloud Functions. On the Cloud Functions page, click Enable now. Click + New Function to create a function.

Enable Cloud DB. Click My projects, click your project card, and go to Build > Cloud DB. On the Cloud DB page, click Enable now and then create an object type and a Cloud DB zone.

Configuring the JavaScript Server SDK of Cloud DB​

Here, I will use the src file in the Huawei service demo to demonstrate how the JavaScript Server SDK is configured. You can also download the file and use it for your own file from GitHub.

Then you need to do the following in AppGallery Connect:

Export an object type.​

On the Cloud DB page, export the BookInfo object type to a JS file, and then add it to the model directory of your project.

Download the authentication credential.​

Go to Project settings > Server SDK. On the Server SDK tab page, click Create for API client first, and then click Download credential to download the authentication credential. Finally, add it to the model directory of your project

Modify the path to the credential.​

You need to modify the path to the credential as it was saved to the model directory. In the CloudDBZoneWrapper.js file (use the _dirname method to obtain the file), modify the initialization code as follows:

let api_client_name = "agc-apiclient-testDB.json";
let path = require('path');
let api_client_path = path.join(_dirname,api_client_name);
agconnect.AGCClient.initialize(agconnect.CredentialParser.toCredential(api_client_path));

Configure a handler.​

You can either use the Start.js file as the handler by default or create a new one. For example, the inde.js file is created as a handler. The sample code is as follows:

const CloudDBZoneWrapper = require("./model/CloudDBZoneWrapper.js");

let myHandler = async function(event, context, callback, logger) {
logger.info(JSON.stringify(event));
logger.info("event start");

const cloudDBZoneWrapper = new CloudDBZoneWrapper();

const bookInfo = cloudDBZoneWrapper.getSingleBook();
// Update and insert a list of books.
await cloudDBZoneWrapper.upsertBookInfos(bookInfo);

let result = {"message":"Run Success"}
callback(result);
}

module.exports.myHandler = myHandler;

Packaging Your Project and Configuring a Trigger​

You need to package your project, upload it to Cloud Functions, and test it with events. The handler file should be saved in the root directory.

Sign in to AppGallery Connect and go to the Cloud Functions page. Upload your package and set the name of the handler to index.myHandler

Configure a CLOUDDB trigger. Click + Add Trigger and configure the type, Cloud DB zone, and object type for the trigger.

Testing the Function​

In AppGallery Connect, go to Cloud Functions > Test.

Configure a trigger event according to the documentation

If you need to configure a data insertion event, add the following sample code.

{
"records": [{
"before": null,
"after": {
"id": "11111",
"bookName": "user1"
}
}],
"objectTypeName": "BookInfo",
"naturalStoreName": "QuickStartDemo"
}

Check the test result.

Reference​

Cloud Functions

Defining a programming model

Cloud DB JavaScript Server SDK