Azure 节点:从 SQL Azure Easy tables 插入函数访问 table 存储

Azure Node: Access table storage from SQL Azure Easy tables insert function

我正在尝试从 SQL Azure EasyTables 插入语句将一些数据插入到 table 存储中,但是 context.execute() 在 table 之前被调用在 table 存储中创建,这会停止我的连接,即使创建新 table 的代码位于 context.execute() 之前。谁能告诉我如何停止 context.execute 功能,直到我完成 table 存储设置。下面是我的代码。感谢帮助

    table.insert(function (context) {
    var azure = require('azure-storage');  
    var tableService = azure.createTableService('NAME', 'KEY');

    context.user.getIdentity().then((data) => {
        tableService.createTableIfNotExists('UserInfo', function(error, result) { 
            if (error) { 
                //do something
            }else {

                var entGen = azure.TableUtilities.entityGenerator;
                var task = {
                  PartitionKey: entGen.String(context.user.id),
                  RowKey: entGen.String('1'), 
                  name : entGen.String(data.facebook.claims.name), 
                  email : entGen.String(data.facebook.claims.emailaddress),
                  createdOn: entGen.DateTime(new Date(Date.UTC(2016, 3, 27))),
                };

                tableService.insertEntity('UserInfo',task, function (error, result, resp) {
                    if(!error){
                        //respond with success message
                    }else{
                        //respond with failure message
                    }
                });
            } 
        }); 
    });

      context.item.userId = context.user.id;
      return context.execute(); //This line is executed before I get success/failure response from table storage

});

这是因为 getIdentity() returns 一个 Promise 对象。

代码then((data) => { ... })调用成功后执行。

更多关于 Promise.then() 工作原理的详细信息,请参阅 here

您可以将代码tableService.createTableIfNotExists(...);写成一个方法,然后在context.execute()中调用该方法。

我写了tableService.createTableIfNotExists(...);进入一个新函数,然后从 "use" operation

中调用该函数

table.insert.use(insertMiddleware, table.operation);