TypeError: Преобразование круговой структуры в JSON при отправке массива через экспресс - PullRequest
2 голосов
/ 18 октября 2019

У меня есть несколько разных файлов, которые содержат несколько связанных функций, я использую их как своего рода контроллеры. В одном из них у меня есть обещание, и я пытаюсь решить эту проблему. Это делается немного иначе, чем передача одного значения, как я обычно вижу. Я пытаюсь решить с помощью объекта JavaScript, который содержит два ключа, один со значением логического значения, а другой с массивом для значения.

Фактическая ошибка, которую я получаю в своем блоке перехвата,

TypeError: Преобразование круговой структуры в JSON

Вот как я пытаюсь разрешить обещание

resolve({success: true, names: body.names});

Где body.names равно приведенному ниже массиву

[ [ 'John Smith', 'Jane Doe' ], [ 'John Smith' ] ]

Моя цель состоит в том, чтобы разрешить обещание таким образом, чтобы я мог передать свое значение «success» для некоторой дополнительной обработки (не ошибка, если ложь, и ее нужно обрабатывать как ошибку)но также хотел бы передать массив имен, чтобы я мог передать это в своем ответе API.

РЕДАКТИРОВАТЬ **

Еще код

exports.formatWithNames = function(policy) {
    return new Promise((resolve, reject) => {
        options.json = {policy};
        request.post('/userListByIDs', options, (err, response, body) => {
            if (err) {
                logger.error(`policy: formatWithNames: ${JSON.stringify(err)}`);
                reject({success: false, message: 'Failure'});
            }
            logger.info(`policy: formatWithNames: body: ${JSON.stringify(body)}`);
            resolve({success: true, names: body.names});
        });
    });
}

Тогдагде это называется

Policy.find({ companyID: req.body.user.companyID }, (err, policy) => {
        if (err) {
            logger.info(`getAllPolicy: Policy find: Error message: ${err}`);
            return res.status(500).json({ success: false, message: 'Error finding policies.' });
        }

        userController.formatWithNames(policy)
        .then(response => {
            console.log(response)
            return res.status(200).json({ success: true, policy: res });
        })
        .catch(err => {
            logger.error(`getAllPolicy: formatWithNames: Error message: ${err}`);
            return res.json({ success: false, policy: null });
        })


    });

1 Ответ

0 голосов
/ 18 октября 2019

Ладно, решение было глупо простым, и я просто назвал переменную miss, чувствуя себя довольно прискорбно. Я должен был использовать policy: response вместо policy: res при возврате моего ответа в моем тогда блоке formatWithNames. Итак, похоже, что происходило то, что res отправлялось обратно, но поскольку я включил его в ответ, он создавал циклическую ссылку на себя (цикл?)

...