Azure functions 是否对CosmosDb Node.js SDK使用回调?

Azure functions 是否对CosmosDb Node.js SDK使用回调?,azure-functions,azure-cosmosdb,azure-functions-core-tools,Azure Functions,Azure Cosmosdb,Azure Functions Core Tools,我正在将应用程序从Azure功能v1迁移到v2。旧的应用程序使用回调,我更喜欢坚持使用它,这样我就不会弄乱应用程序的逻辑。我需要以数组的形式获取数据,然后在回调中执行应用程序逻辑。但是,在Cosmosdb sdk v2.1.1中使用回调时,我得到错误未处理PromisejectionWarning:error:toArray不接受任何参数。Cosmosdb文档没有在Node.js中使用回调的示例。下面是我的代码,你能告诉我代码有什么问题吗 const CosmosClient = require

我正在将应用程序从Azure功能v1迁移到v2。旧的应用程序使用回调,我更喜欢坚持使用它,这样我就不会弄乱应用程序的逻辑。我需要以数组的形式获取数据,然后在回调中执行应用程序逻辑。但是,在Cosmosdb sdk v2.1.1中使用回调时,我得到错误
未处理PromisejectionWarning:error:toArray不接受任何参数
。Cosmosdb文档没有在Node.js中使用回调的示例。下面是我的代码,你能告诉我代码有什么问题吗

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

let config = {}

const endpoint = process.env.HOST;
const masterKey = process.env.COSMOS_DB_PRIMARY_KEY;
config.db_account = process.env.COSMOS_DB_ACCOUNT;
config.containerId = "games";
config.gameCollectionPath = "dbs/" + config.db_account + "/colls/games";

const client = new CosmosClient({
  endpoint: endpoint,
  auth: {
    masterKey: masterKey
  }
});

module.exports = function (context, req, game) {

client.database(config.db_account).container(config.containerId).items.query(querySpec).toArray(function (err, results) {

        if (err) {
            context.res = {}
            context.done();
            return;
        }

       if (my_condition_is_met) {
            context.res = {}
            context.done();
        }
}
}

v2 SDK不直接支持回调。你必须遵守诺言。你的错误案例和成功案例也与承诺分开

client.database("foo").container("bar").items.query(spec).toArray()
    .then((response) => {
        console.log(response.result)
    })
    .catch((err) => {
        console.error("something went wrong with query", err);
    });
FWIW,我们绝对推荐异步/等待模式。它使代码更加紧凑,可读性更强,但回调的承诺也完全可以