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);
我正在尝试从 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);