Azure Serverless Вставить данные в Cosmos dB, используя JavaScript - PullRequest
0 голосов
/ 07 ноября 2019

Все, я пытаюсь найти некоторую документацию для вставки данных в коллекцию Cosmos DB, используя мою функцию без сервера. Я использую httptriggers, чтобы получить данные из запроса и вставить их в космос.

Я не могу найти документацию по этому вопросу .. особенно с использованием 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 голосов
/ 07 ноября 2019

Если вам нужно использовать SDK Cosmos DB в функциях Azure, вы можете:

Использовать JS SDK Cosmos DB

Пакет: 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, поскольку они охватывают основные сценарии без необходимости выполнять такие вещи, как поддержаниеэкземпляр singleton-клиента, но если вы хотите сделать много вещей (запросить документы, сохранить их, обновить и т. д.) при выполнении одной и той же функции, то лучше всего выбрать первый вариант.

Ссылка: 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"
}
0 голосов
/ 07 ноября 2019

Вы можете найти документацию по 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."
        };
    }
};
...