Dreamfactory на стороне сервера - не могу использовать функцию Get Node.js для цикла
Мой клиент Angular публикует массив идентификаторов элементов в Postgres. Это выглядит как {12,13,14} или как угодно. Я хочу целые числа, а не имена, в БД. Я могу получить их и с небольшим разбором получить хороший массив, который выглядит следующим образом: [12, 13, 14]. Это хорошо отображается в Angular, но мне нужно заменить идентификаторы именами из таблицы элементов. Пользователи не хотят видеть цифры, им нужны имена.
Я использую цикл for для извлечения идентификатора по одному за раз, но затем мне нужно получить связанные имена. Проблема в том, что Node.js platform.api.get... включает функцию обратного вызова, и это вызывает сообщение об ошибке, в котором говорится, что я не могу использовать функцию в цикле for.
Есть ли обходной путь?
Создание виртуальных отношений в связанной таблице не работает. Массив приводит к ошибкам типа, даже когда я вручную ввожу тип как целое число [] в отношении. Отношения работают нормально, если в поле есть только одно целое число. Я провел пару дней, пробуя каждый тип и настройку, которая имеет смысл. DF не будет работать с массивом.
Это то, что я хочу сделать, но это не будет работать в коде Node.js:
for (var i = 0; i < record.length; i++) {
var items_names = []; // Setup array for item names.
var items = record[i].item_id_array; // json property with id array.
if (items !== null) {
var step1 = items.replace(/[{}]/g, ""); // Remove {} "11,14,13"
var step2 = step1.split(',').map(parseFloat); // Parse into an array. [11, 14, 13]
for (var incr = 0; incr < step2.length; incr++) {
var id = step2[incr];
var url = 'pfcrud/_table/items/' + id;
// This is what I need but doesn't work for Node.js.
// It requires a function but that creates an error in the for loop.
var itemName = platform.api.get(url);
items_names.push(itemName); // Create array of item names.
}
// This loads the array of names into the json bound for the UI.
record[i].item_id_array = items_names;
}
Что DF Doc говорит, что я должен сделать:
var url = 'db/_table/items' + id;
var options = null;
platform.api.get(url, options, function(body, response) {
var itemName = body.item_name;
items_names.push(itemName);
});