Как сделать запрос из cosmosdb в лазурной функции с машинописью - PullRequest
0 голосов
/ 10 ноября 2019

Я новичок в Typescript и CosmosDB, это может быть довольно глупый вопрос, однако, я искал в Интернете весь день и не смог найти решение, которое отлично работает для моего случая. Надеюсь, кто-то хотел бы помочь здесь.

В основном я пытался реализовать RESTful API с помощью функции Azure (javascript / typescript), что именно API-интерфейсы подключают и запрашивают из моей Azure cosmosdb (sql). Связывание данных было тем, что я использовал для привязки базы данных к своим функциям. Дело в том, что я не уверен, как выбрать значение из БД в соответствии с определенным значением столбца (выберите идентификатор из таблицы, где username = "abc").

Чтобы сделать мой вопрос более понятным, вот мой пользовательский элемент вcosmos db:

{
    "id": "1",
    "userid": "33218898",
    "username": "test1",
    "password": "psw",
    "email": "1@test.com",
    "momentID": [
        "1",
        "2",
        "3"
    ],
    "followingID": [
        "2",
        "3"
    ],
    "followerID": [
        "2",
        "3"
    ]
}

Вот как я получил пользователей от функции azure:

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 не является определенной функцией в машинописи, может кто-нибудь любезно помочь с этим?

1 Ответ

0 голосов
/ 10 ноября 2019

Вы можете использовать пакет @ 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;
  }

Вот это sample

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