我有一个Azure函数,它正在查询一个当然持有数据的cosmos db mongo集合。
但是,当通过我的azure函数查询时,该函数返回一个空数组。
我的功能看起来像:
[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");
}
我正在为我的仓库存储库注入一个自定义类型,这取决于db配置上下文,如下所示:
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;
}
有没有人有任何想法在这里可能会出错?我是否需要使用azure函数以不同的方式设置cosmos Db连接?
在将逻辑移动到azure函数之前,此设置先前已有效。
我使用上面相同的代码插入到集合中,并将其插入到具有相同集合名称的数据库中的新集合中..仍然不确定原因,但我想它现在正在工作。