Может ли приложение Angular от Mobile напрямую записывать в Cosmos DB? - PullRequest
1 голос
/ 30 сентября 2019

Я вижу, что Cosmos DB масштабируема по планете. Таким образом, это означает, что я могу создать несколько копий Cosmos DB по всему миру, чтобы обеспечить более быструю реакцию пользователей.

Однако мне интересно, требуется ли также веб-API для записи в Cosmos DB? Если это так, нам нужно развернуть несколько копий Web API.

Мой вопрос: может ли Angular App с мобильного устройства напрямую записывать в Cosmos DB? (без промежуточного уровня API)

1 Ответ

0 голосов
/ 30 сентября 2019

Да, вы можете напрямую писать в Cosmosdb, используя пакет @azure/cosmos npm.

вы можете использовать его внутри службы angualr как,

import * as Cosmos from "@azure/cosmos";

export class CosmosService {

    private static instance: CosmosService;
    private readonly cosmosHost = "<your_db>.documents.azure.com:443/";
    private readonly primaryKey = "<primary_key>";
    private readonly database = "ToDoList";
    private readonly collection = "Items";

    private client: Cosmos.CosmosClient;
    db: Cosmos.Database;
    container: Cosmos.Container;

    public items: Model.Todo[];

    constructor() {
        this.client = new Cosmos.CosmosClient({
            endpoint: `https://${this.cosmosHost}`,
            auth: {
                masterKey: this.primaryKey
            },
            consistencyLevel: "Eventual",
            connectionPolicy: {
                enableEndpointDiscovery: false
            }
        });

        this.db = this.client.database(this.database);
        this.container = this.db.container(this.collection);
    }

    async addItem(todo: Model.Todo) {
        const item = await this.container.items.create(todo)
            .catch(err => console.error(err));
        console.log(item);
    }

    async listCollections(): Promise<Model.Todo[]> {

        const response = await this.container.items
            .readAll<Model.Todo>().fetchAll();
        console.warn(response);
        this.items = response.resources;
        console.log(`${this.items.length} items received`);
        return this.items;
    }

    public static getInstance(): CosmosService {
        if (!CosmosService.instance)
            CosmosService.instance = new CosmosService();
        return CosmosService.instance;
    }
}

Вот пример приложения с Ionic , конечно, вы можете использовать его и с угловым. Но я бы порекомендовал вам использовать веб-API в середине

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...