Функция Azure, возвращающая пустой набор данных из коллекции Cosmos Db Mongo - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть функция Azure, которая запрашивает коллекцию cosmos db mongo, которая, безусловно, содержит данные.

Data is in the collection

Однако, при запросе через мою функцию лазури, функция возвращает пустой массив.

Моя функция выглядит примерно так:

    [FunctionName("GetAll")]
    public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]HttpRequest req, 
        TraceWriter log, [Inject(typeof(IWarehouseStateRepository))]IWarehouseStateRepository repoW)
    {
        log.Info("GetAll Function is processing a request");
        var warehouses = repoW.GetAllWarehouses();
        return warehouses != null ? 
            (ActionResult)new OkObjectResult(warehouses) :
            new BadRequestObjectResult("Something went wrong with this request");
    }

Я ввожу пользовательский тип для моего хранилища, который зависит от контекста конфигурации БД, который выглядит примерно так:

public class StateContext : IStateContext
{
    private readonly IMongoDatabase _database = null;
    private readonly string _connectionString;
    private readonly string _dbName;
    private readonly string _collectionName;

    public StateContext()
    {

        _connectionString = Environment.GetEnvironmentVariable("AggregateDbConnectionDev");
        _dbName = Environment.GetEnvironmentVariable("AggregateDbNameDev");
        _collectionName = Environment.GetEnvironmentVariable("AggregateDbCollectionDev");

        MongoClientSettings settings = MongoClientSettings.FromUrl(new MongoUrl(_connectionString));
        settings.SslSettings = new SslSettings() { EnabledSslProtocols = SslProtocols.Tls12 };

        var client = new MongoClient(settings);
        if (client != null)
            _database = client.GetDatabase(_dbName);
    }

    public IMongoCollection<WarehouseState> WarehouseState
    {
        get
        {
            return _database.GetCollection<WarehouseState>(_collectionName);
        }
    }
}

Функция не выдает ошибок или исключений.

И запрос репо:

    public IEnumerable<WarehouseState> GetAllWarehouses()
    {
        var warehouses = _context.WarehouseState.Find(_ => true).ToList();
        return warehouses;
    }

У кого-нибудь есть идеи, что здесь может пойти не так?Нужно ли настраивать соединение Cosmos Db по-другому с помощью функции Azure?

Эта настройка работала ранее, прежде чем перейти к функции Azure.

1 Ответ

0 голосов
/ 14 сентября 2018

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

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