Сохранить http-запрос на mongodb "Обнаружена циклическая зависимость" - PullRequest
0 голосов
/ 09 мая 2019

Привет, сообщество! Сегодня днем ​​я попытался сохранить данные, полученные от API в mongodb.В этом тесте я использовал ' пакет запроса ', но я также попробовал его с XMLHttpRequest, и происходит то же самое.Я понимаю, что проблема в зависимостях ref: (A -> B -> A), но я не смог ее решить.Если кто-то скажет мне, где искать, я был бы очень признателен!

Примечание: я пытаюсь использовать модуль http узла, но у меня проблемы с хранением из нескольких API

С уважением!

• user.controller.js

const express = require('express');
const router = express.Router();
const userService = require('./user.service');

router.post('/test', test);

module.exports = router;

function test(req, res, next) {
    userService.store(req.body)
        .then(() => res.json({}))
        .catch(err => next(err));
}

• user.service.js

const config = require('config.json');
const db = require('_helpers/db');
const request = require('request');
const User = db.User;

module.exports = {
    store
};

async function store(userParam) {

    let api = request('https://swapi.co/api/people/1/', (error, response, body) => {
        console.log('error:', error);
        console.log('statusCode:', response && response.statusCode);
        return(body);
    });

    const user = new User({
        name: userParam.name,
        swapi: api
    });

    await user.save();
}

• user.model.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const schema = new Schema({
    name: { type: String, required: true },
    swapi: { type: Object, required: true },
    createdDate: { type: Date, default: Date.now }
});

schema.set('toJSON', { virtuals: true });

module.exports = mongoose.model('User', schema);

• db.js помощник базы данных

const config = require('config.json');
const mongoose = require('mongoose');
mongoose.connect(config.connectionString, {useNewUrlParser: true });
mongoose.Promise = global.Promise;

module.exports = {
    User: require('../user/user.model')
};

1 Ответ

0 голосов
/ 09 мая 2019

Я решил эту проблему с помощью axios.

const config = require('config.json');
const db = require('_helpers/db');
const axios = require('axios');
const User = db.User;

module.exports = {
    store
};

async function store(userParam) {

    await axios.get('https://swapi.co/api/people/1/')
        .then(function (response) {
            const user = new User({
                name: userParam.name,
                swapi: response.data
            });
        })
        .catch(function (error) {
            console.log(error);
        });

        user.save();
    }

}

Привет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...