Я работаю с Azure Mobile Services. У меня две таблицы, а то, что я пытаюсь сделать, - это захватить значение столбца из таблицы А, проверив, где оно совпадает со значением столбца из TableB, когда я запускаю вставку в TableB.Azure Mobile Server Script - получить значение столбца из другой таблицы
Мой серверный скрипт вставки выглядит следующим образом:
function insert(item, user, request) {
var TableA_Table = tables.getTable('TableA');
tableA_Table
.where({ columnValue: item.columnValue })
.read ({ success: setItemColumnValue });
request.execute();
function setItemColumnValue(result)
{
item.tableA_id = result.id;
}
}
Я подтвердил, что моя команда tableA_Table.where тянет правильную строку из TableA, но когда я вхожу в console.log (результат) в пределах setItemColumnValue, он печатает undefined.
Вся документация, которую я нашел, показывает код, похожий на мой, но я просто не могу понять, где я ошибаюсь. Любая помощь приветствуется !!
Thanks Carlos! Я обновил свой код, как вы упомянули, теперь я напрямую обращаюсь к значениям id элементов массива, и теперь я понимаю асинхронный характер функций обратного вызова. Единственная оставшаяся проблема, с которой я сталкиваюсь, заключается в том, что Azure выбрасывает «Error: Execute не может быть вызван более одного раза», хотя мой второй request.execute находится в моей функции setItemColumnValue, как вы выложили. Есть идеи? – Naz
Извините, я забыл удалить вызов 'request.execute()' после вызова 'read'. Так как при обратном вызове чтения все пути кода будут отвечать на запрос (либо путем вызова 'request.respond', либо' request.execute'), оригинал больше не требуется. Я обновил код в ответе. – carlosfigueira
Еще раз спасибо Карлос, очень ценится. – Naz