I'm attempting to use the Azure storage SDK for node to create a Table in Table Store, if it does not exist.
The following code is valid and returns a 200 response, although there is no response content. However, the table is created as expected.
Upon investigation, I can see that the Azure Function app is logging the following -
Creating table 'Test'.
[warn] Warning: Unexpected call to 'log' on the context object after function execution has completed. Please check for asynchronous calls that are not awaited or calls to 'done' made before function execution completes.
So it seems that while the createTableInTableStore
is working as expected, the async/await part of my function is not. I suspect that I'm doing something wrong, but from the looks of it I am correctly implementing await
as and when it's requried.
How can I get the function to wait for the createTableInTableStore
method to complete before it move on?
Example code
Please note that the azure-storage npm package is required (npm install azure-storage
).
module.exports = async function (context) {
var azure_storage = require('azure-storage');
var table_service = azure_storage.createTableService(process.env["AzureWebJobsStorage"]);
var create_table_result = await createTableInTableStore(context, table_service, "Test");
return {
res: create_table_result
};
};
async function createTableInTableStore(context, table_service, table_name) {
context.log("Creating table '"+table_name+"'.");
return await table_service.createTableIfNotExists(table_name, function(error, result, response) {
if (!error && result) {
context.log.info("[Info] Table created successfully.")
} else if (!error && !result) {
context.log.info("[Info] Table already exists.")
}
if (error) {
context.log.error("[Error] An unexpected error occurred.")
context.log.error(" -----> " + response)
}
});
}