当前位置: 首页 > 知识库问答 >
问题:

如何用typescript在azure函数中从cosmosdb查询

戚俊健
2023-03-14

我对Typescript和CosmosDB是新手,这可能是一个相当愚蠢的问题,然而,我在网上搜索了一整天,也找不到适合我的解决方案。希望有人愿意帮忙。

{
    "id": "1",
    "userid": "33218898",
    "username": "test1",
    "password": "psw",
    "email": "1@test.com",
    "momentID": [
        "1",
        "2",
        "3"
    ],
    "followingID": [
        "2",
        "3"
    ],
    "followerID": [
        "2",
        "3"
    ]
}
module.exports = async function (context, req, inputDocument) {
    context.log('JavaScript HTTP trigger function processed a request.');
    if (!!inputDocument && inputDocument.length > 0) {
            if(req.query.id || (req.body && req.body.id)){
                context.res = {
                    // status: 200, /* Defaults to 200 */
                    body: "User with id [" + req.query.id + "] is :" + inputDocument[req.query.id-1].username
                };
            }
            else if(req.query.name || (req.body && req.body.name)){
                const user = inputDocument.select("[@username='test1_update']");
                const userid = user.id;
                context.log('User id with username :' , userid);
            }else{
                var arr_user = new Array(inputDocument.length);

                for(var _i = 0; _i <inputDocument.length; _i++)
                {
                    arr_user[_i] = inputDocument[_i].username;
                }
                context.res = {
                    status: 200, 
                    body: "Hello " + arr_user
                };
                context.log('Username: ', arr_user);
            }
    }  
    else{
        context.log('Nothing in the inputDocument');
    }
};

select似乎不是typescript中定义的函数,有人能帮忙吗?

共有1个答案

孙永思
2023-03-14

您可以使用@Azure/Cosmos包和javascript从集合中读取数据。

const CosmosClient = require("@azure/cosmos").CosmosClient;

getUser: async function (login) {
    const querySpec = {
      query: 'SELECT * FROM users',
      parameters: [
      ]
    };

    const result = await cosmosClient
      .database(databaseId)
      .container(containerId)
      .items.query(querySpec)
      .fetchNext();

    if (result && result.resources) {
      return result.resources[0];
    }

    return undefined;
  }

以下是示例

 类似资料:
  • 下面是我的function.json 有什么想法可以摆脱这个“exception:attributeError:module'azure.functions'没有属性'in'”错误吗?

  • 我正在探索Azure CosmosDB,在理解如何查询我的收藏时遇到了问题。我创建了一个web应用程序来添加和查询数据,但我想在Azure中搜索,不知道如何构造查询。 目前,我查询我的集合以返回所有内容。 这将返回大量信息。下面是数据的示例。 有没有办法只查询某个“searchTerm”(我的CosmosDB中的一个字段)。我似乎无法掌握过滤我的查询的语法。我已经尝试了在SQL中看起来有意义的东西

  • 我一直在寻找一种技术,使用浏览器中的代码编辑器,使用Azure函数删除Cosmos数据库中的项目。我不想在VS上使用本地开发的代码,原因有很多。 这里提供了我使用的代码,我使用的是带有CosmosDB输入和输出绑定的HttpTrigger。它们的名称非常明显(inputDocument,outputDocument)。 这段代码在从db读取项目和编写新文档方面工作得非常好,但是我希望能够删除单个项

  • 我已经创建了一个azure函数,当一个新文档被添加到一个集合中时,它会被触发。 是否可以从该集合中选择特定文档,然后查询所选文档中的数据? 例如,在所谓的募集服装,我有一个文件,有一个ID: 12345Tops.我想查询ID为:12345Tops的文档中找到的数据。 或者检索集合中的第一个文档,然后查询第一个选定文档 我看过带有http触发器的azure函数:https://docs.micros

  • 我在CosmosDB中有两个集合,和。 集合保存所有历史价格,并不断更新。 我想创建一个Azure函数,它监听< code>StockPrices更新(< code>CosmosDBTrigger),然后对触发器传递的每个< code >文档执行以下操作: 在集合中查找具有匹配代码的股票 在集合中更新股票价格 我不能用<code>CosmosDB(绑定仅在触发器传递单个项时有效)。 我看到它工作的

  • 我知道如何使用Azure云函数在我的CosmosDB实例中创建、读取和更新文档,但仍然不知道如何实现删除。我用作参考的主要文档是https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-cosmos-db-triggered-function. 我尝试使用没有id的输入和输出绑定(从而获取整个集合),然后过滤要从