我有一個帶有 http 觸發器的 azure 函式,然后這個函式從 url 獲取資料并處理這些資料并決議為 json。
我需要的是在回傳答案之前呼叫函式時將此資料存盤到天藍色表存盤中。
const axios = require('axios');
const azureStorage = require('azure-storage');
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
const name = (req.query.url || (req.body && req.body.url));
const responseMessage = name
? `Hello you are trying to download file from ${req.body.name} with url ${req.body.url}`
: "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
context.res = {
body: {
textParsed: await getData(req.body.url),
statusTable: saveDataOnTable(context),
conectionString: process.env.conectionString
}
};
}
async function getData(url) {
const request = await axios(url).then(response => { return response.data });
const jsonData = await csvJSON(request);
return jsonData;
}
async function csvJSON(csv) {
let regularQuotes = /"/g;
let csvArray = csv.split("\r\n");
let headers = csvArray[0].split(",");
let result = [];
//recorre el array con los datos del csv
for (let index = 1; index < csvArray.length; index ) {
//comprueba que el campo no este vacio
if (!csvArray[index]) continue;
let obj = {};
//guarda la linea actual
let currentline = csvArray[index];
//reemplaza los caracteres de escape como comillas
currentline = regularQuotes[Symbol.replace](currentline, '');
//separa los datos utilizando las comillas como caracter de escape
currentline = currentline.split(",");
for (let j = 0; j < headers.length; j ) {
//elimina espacios de las cabezeras
let head = headers[j].trim();
//elimina espacios de los datos
let value = currentline[j].trim();
//crea el objeto con los valores
obj[head] = value;
}
result.push(obj);
}
//devuelve una string en formato json
return JSON.stringify(result);
}
uj5u.com熱心網友回復:
- 有一個 sdk 可用于連接和操作 azure 中名為
@azure/data-tables. 一起安裝uuid
npm install @azure/data-tables
npm install uuid
- 從 sdk 匯入特定功能,例如:
const { v4: uuidv4 } = require('uuid');
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
- 現在您將需要存盤物體的連接密鑰。另外,請事先在該存盤空間中創建一個表。
const accountname = "";
const accountkey = "";
const tableName = "";
- 現在我們創建一個
tableclient將連接到表存盤并將物體添加到表中。
const credential = new AzureNamedKeyCredential(accountname, accountkey);
const client = new TableClient(`https://${accountname}.table.core.windows.net`, tableName, credential);
- 現在我們必須創建一個將發送到表的物體,然后我們將其發送到表存盤。
// I am assuming that the response of the url isin json
let testjsonobject = {};
testjsonobject.language = "javascript";
testjsonobject.platform = "azure functions"
context.log(testjsonobject);
let testjsonobjectString = JSON.stringify(testjsonobject);
let partitionkeynew = uuidv4();;//crypto.randomUUID();
context.log(partitionkeynew);
const entity = {
partitionKey : partitionkeynew,
rowKey:"1",
description:testjsonobjectString
}
let result = await client.createEntity(entity);
完整代碼:
const { TableServiceClient, odata } = require("@azure/data-tables");
const { v4: uuidv4 } = require('uuid');
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
const accountkey = "";
const accountname = "";
const tableName = "";
const credential = new AzureNamedKeyCredential(accountname, accountkey);
const client = new TableClient(`https://${accountname}.table.core.windows.net`, tableName, credential);
let testjsonobject = {};
testjsonobject.language = "javascript";
testjsonobject.platform = "azure functions"
context.log(testjsonobject);
let testjsonobjectString = JSON.stringify(testjsonobject);
let partitionkeynew = uuidv4();;//crypto.randomUUID();
context.log(partitionkeynew);
const entity = {
partitionKey : partitionkeynew,
rowKey:"1",
description:testjsonobjectString
}
let result = await client.createEntity(entity);
context.log(result);
context.res = {
// status: 200, /* Defaults to 200 */
body: result
};
}
如果操作成功,這里的結果將得到一個 Etag。


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530100.html
上一篇:AzureSynapse:我應該怎么做才能訪問PowerBI服務上的PowerBI報告而無需啟用“公共網路訪問”?
