【问题标题】:Angular Service with Azure CosmosAzure Cosmos 的 Angular 服务
【发布时间】:2020-08-19 09:26:52
【问题描述】:

我对 Angular 真的很陌生。我正在尝试创建一个我想在我的角度组件中使用的服务。这样做时我遇到了错误。

下面是我正在写的代码

import { Injectable } from '@angular/core';
import { HttpClient} from '@angular/common/http';
import { CosmosClient } from '@azure/cosmos';
import {Observable,of} from 'rxjs'

@Injectable({
  providedIn: 'root'
})
export class ApiService {
  
  databaseId='dbName';
  containerId='Container Name';
  constructor() { }

  public async getProjects():Promise<Observable<any>>{
    const endpoint = "https://AAAA.documents.azure.com:443/";
    const key = "==";
    const client = new CosmosClient({ endpoint, key });
    const database = client.database(this.databaseId);
    const container = database.container(this.containerId);

    const querySpec = {query: "SELECT * from c where c.Category=\"Details\""};
    const { resources:items } = await container.items.query(querySpec).fetchAll();
    return of(items);
  }
  
}

非常感谢任何帮助。

【问题讨论】:

  • 请编辑您的问题以显示您的实际错误。您只显示了一个代码块,并不清楚您遇到了什么错误,或者代码中发生错误的位置。
  • 谢谢,我已经添加了我的错误图片。

标签: node.js angular azure-cosmosdb


【解决方案1】:

每条规则都有一个例外,但直接从 Web 浏览器连接到数据库的用例几乎为零。这样一来,您就失去了对用户可以在您的数据库中执行的操作的所有细粒度控制,而撤销访问权限的唯一方法是轮换您的密钥。您的数据库中目前可能没有任何敏感内容,但仍被认为是不好的做法。

因此,CosmosDB 库与 NodeJS 作为服务器端框架兼容。它是否适用于 Angular 或 React 等前端框架是偶然的。 Angular 9 版本编译项目的方式发生了一些较大的变化,看起来 Cosmos 客户端与新的 Ivy 编译器不兼容。

这里有几个选项。

  1. (推荐) 在数据库和前端之间使用 API 层。您可以使用 Node 将其保留在 Javascript 中。如果您在 Azure 上运行,Azure Functions 之类的服务可以更轻松地安全实施,或者您可以从相同的应用服务、VM 或您正在使用的任何托管解决方案运行它。
  2. Disable 新的 Ivy 编译器。您可以通过在 angular.json 中添加 aot: false 来做到这一点

【讨论】:

  • 你是对的,我确实有一个节点服务层。但只是想检查这是否可能。
  • 太棒了。 :) 如果你真的想要,你可以让它工作,但这不是一个好主意。
  • 我唯一担心的是,如果我继续使用节点服务,那么我可能不得不在 azure 中购买一个容器并为此付费;)而且我的应用程序并没有那么大。因此将其移植到良好的旧 .net 平台(.net 核心应用程序)中,该平台允许在一个应用程序中使用 API + Angular SPA。 (至少那是我有限的理解)。希望能省钱……
  • 当然,有几种方法可以在 Azure 中托管网站,但如果您没有大量流量,将 API 托管为函数应用程序可能值得一看。与 App Services 中的免费套餐不同,Functions 消费计划没有任何特殊限制,并且在开始计费之前有相当大的免费赠款。
  • 您可以使用函数代理在存储中托管 Angular 部分,同时仍将 *.azurewebsites.net 或您的自定义域放在它前面。存储成本不是免费的,但 Functions + Storage 很可能比应用服务计划或 VM 便宜。
猜你喜欢
  • 2019-07-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
相关资源
最近更新 更多