连接到CosmosDB时,Azure Chatbot失败,并显示“ SyntaxError:意外标识符-cosmosClient.databases.createIfNotExists”

时间:2019-01-10 06:43:29

标签: node.js azure azure-cosmosdb azure-bot-service azure-cosmosdb-sqlapi

我对Azure Bot Services和整个Azure平台非常陌生。 我正在尝试使用node.js创建一个Chatbot,但是在尝试连接到CosmosDB时出现以下错误。

在添加以下代码以连接到CosmosDB之前,该机器人运行良好。

任何对此的帮助或指导,将不胜感激!

P.S。 -我添加了'@ azure / cosmos'程序包,如果我删除了try-catch程序段,则代码运行没有任何错误。

用于连接到CosmosDB的代码:

ng --version

错误消息:

var async=require("async"); 
var await=require("await"); 

const CosmosClientInterface = require("@azure/cosmos").CosmosClient;
const databaseId = "ToDoList"; 
const containerId = "custInfo"; 

const endpoint = "<Have provided the Endpoint URL here>";
const authKey = "<Have provided the AuthKey here>";

const cosmosClient = new CosmosClientInterface({
    endpoint: endpoint,
    auth: {
      masterKey: authKey
    },
    consistencyLevel: "Session"
  });

async function readDatabase() {
   const { body: databaseDefinition } = await cosmosClient.database(databaseId).read();
   console.log(`Reading database:\n${databaseDefinition.id}\n`);
}

1 个答案:

答案 0 :(得分:1)

没有async函数就无法等待。

将所有代码转储到async function main(){}方法中,然后调用main().catch((err) => console.log(err));或类似的东西来启动promise并处理错误。

在此示例中,您可以在此处看到这种模式的示例:https://github.com/Azure/azure-cosmos-js/blob/master/samples/ChangeFeed/app.js#L33

---编辑1 ---

这是您用Promises重写的示例:

const CosmosClientInterface = require("@azure/cosmos").CosmosClient;
const databaseId = "ToDoList"; 
const containerId = "custInfo"; 

const endpoint = "<Have provided the Endpoint URL here>";
const authKey = "<Have provided the AuthKey here>";

const cosmosClient = new CosmosClientInterface({
    endpoint: endpoint,
    auth: {
      masterKey: authKey
    },
    consistencyLevel: "Session"
  });

cosmosClient.database(databaseId).read().then(({body: databaseDefinition}) => {
   console.log(`Reading database:\n${databaseDefinition.id}\n`);
}).catch((err) {
   console.err("Something went wrong" + err);
});

对于上面的示例,您无需导入async / await,它们现在是JavaScript中的关键字。

这是一篇博客文章,比较和对比了异步/等待和承诺:https://hackernoon.com/should-i-use-promises-or-async-await-126ab5c98789