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);
});

0 ответов

Другие вопросы по тегам