Я пытаюсь вставить некоторые данные в хранилище таблиц из инструкции вставки SQL Azure EasyTables, но вызывает вызов context.execute() до того, как таблица будет создана в таблице хранилище, которое останавливает мое соединение, даже если код для создания новой таблицы помещается перед context.execute(). Может кто-нибудь сказать мне, как я мог бы остановить функцию context.execute, пока не закончу настройку хранилища. Ниже мой код. Спасибо за помощьAzure Node: доступ к хранилищу таблиц из функции SQL Azure Easy tables insert
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
});
Но Алекс не должен затем ((data) => {...}) выполнить перед методом context.execute(), и я все равно должен был бы создать таблицу? или вы говорите, что context.execute происходит сначала, затем приходит then ((data) => {...}) –
Я имею в виду, что когда ваш код запускается в 'context.user.getIdentity(), программа проверяет, getIdentity() 'выдает ошибку, если нет, то «then ((data) => {...})» будет выполняться сразу, вставляя новую Entity в таблицу. Я думаю, что «context.execute()» здесь бесполезен. Вы можете сделать так: 1) переместить код tableService.createTableIfNotExists (...); в метод и вызовите метод в context.execute(). или 2) удалить 'context.execute()'. –
Спасибо Alex, но если я удалю context.execute(), который я пробовал ранее, я получаю. В элементе отсутствует ошибка. Метод «insert» ожидает оператора return. и любое заявление о возвращении, которое я помещаю в место контекста. execute(), этот оператор выполняет снова перед созданием таблицы, поэтому я возвращаюсь к квадрату 1. Я исправил свою проблему, см. мой ответ ниже. Промежуточное «использование» всегда выполняется перед операцией таблицы, пока я не укажу, чтобы перейти к операции с таблицей. поэтому я переместил весь свой код там –