Azure无服务器使用javascript将数据插入Cosmos dB

时间:2019-11-07 07:00:13

标签: javascript node.js azure azure-cosmosdb serverless

所有,我正在尝试查找一些文档,以使用无服务器功能将数据插入Cosmos DB集合。我正在使用httptriggers从请求中获取数据并将其插入到cosmos中。

我无法找到任何有关此的文档。尤其是使用javascript。

这是我目前的情况,但是会抛出错误。
我的Index.js文件

module.exports = async function (context, req) {
    const endpoint = "https://localhost:8081/";
    const key = "key here";
    const database = "NodeSamples";
    const container = "Data";
    const itemDefs = JSON.parse({"fname":"John","lname":"Doe"});
    await Promise.all(itemDefs.map((itemDef: any) => container.items.create(itemDef)));
};

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以从here中找到文档,并且需要导入必要的程序包

module.exports = async function (context, req) {

    // We need both name and task parameters.
    if (req.query.name && req.query.task) {

        // Set the output binding data from the query object.
        context.bindings.taskDocument = req.query;

        // Success.
        context.res = {
            status: 200
        };
    }
    else {
        context.res = {
            status: 400,
            body: "The query options 'name' and 'task' are required."
        };
    }
};

答案 1 :(得分:0)

如果要使用Azure Functions中的Cosmos DB SDK,则可以:

使用Cosmos DB JS SDK

包装:https://github.com/Azure/azure-cosmos-js/

参考:https://docs.microsoft.com/azure/azure-functions/manage-connections#cosmosclient-code-example-javascript

const cosmos = require('@azure/cosmos');
const endpoint = process.env.COSMOS_API_URL;
const key = process.env.COSMOS_API_KEY;
const { CosmosClient } = cosmos;

const client = new CosmosClient({ endpoint, key });
const container = client.database("MyDatabaseName").container("MyContainerName");

module.exports = async function (context) {
    const itemDefs = JSON.parse('[{"id":"SomeId", "fname":"John","lname":"Doe"}]');
    await Promise.all(itemDefs.map((itemDef: any) => container.items.create(itemDef)));
}

使用Cosmos DB函数绑定

绑定是与Cosmos DB进行交互的一种简便方法,因为它们涵盖了基本场景,而无需执行维护单例客户端实例之类的事情,但是如果您想做很多事情(查询文档,保存它们,更新等) )在同一函数上执行,那么最好的选择是选择第一个选项。

参考:https://docs.microsoft.com/azure/azure-functions/functions-bindings-cosmosdb-v2#output---javascript-examples

module.exports = function (context) {
  const itemDefs = JSON.parse('[{"id":"SomeId", "fname":"John","lname":"Doe"}]');
  context.bindings.documentsToSave = itemDefs;
  context.done();
};

已使用绑定定义了function.json

{
    "name": "documentsToSave",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}