POST-маршрут вызывает другой POST-маршрут.Можно ли получить «res» второго POST?экспресс-узел.js - PullRequest
0 голосов
/ 23 октября 2018

Итак, у меня есть POST-маршрут, который вызывает функцию:

router.route('/generateSeed').post(function(req,res){
generate_seed(res)
});

ОБНОВЛЕНИЕ: Вот функция genrate_seed ()

 function generate_seed(res)
{

    var new_seed = lightwallet.keystore.generateRandomSeed();
    generate_addresses(new_seed, res);
}

var totalAddresses = 0;

function generate_addresses(seed, res)
{
    if(seed == undefined)
    {
            console.log("seed")
    }
    var password = Math.random().toString();

    lightwallet.keystore.createVault({
        password: password,
        seedPhrase: seed,
            hdPathString: "m/44'/60'/0'/0" //added this changing from Default m/0'/0'/0'/

    }, function (err, ks) {
        ks.keyFromPassword(password, function (err, pwDerivedKey) {
            if(err)
            {
            }
            else
            {
                ks.generateNewAddress(pwDerivedKey, totalAddresses);
                var addresses = ks.getAddresses()
                var web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io"));//changed to infura as a provider
                var html = "";
                    var address = addresses;
                    var seedPhrase = seed;
                    addToAPI(address,seedPhrase, res); //address
            }
        });
    });
}

        function addToAPI(address, seedPhrase, res){
            var NewUser = {
         publicK: address,
                 seed: seedPhrase
             }

      axios.post('http://localhost:3000/CryptoWallet/add/createCryptoWallet', NewUser)//changed from localhost
    .then((res)=>{
       console.log("Response");
    })
      .catch(error=>{
        console.log(error);
      })
    }

Что вызывает этот второй маршрут :

router.route('/add/createCryptoWallet').post(function(req,res){

  var crypto_wallet = new CryptoWallet(req.body)
    console.log("The cyrptoWallet on create", crypto_wallet);
      crypto_wallet.save()
      .then(crypto_wallet =>{
        res.json({data: CryptoWallet({_id:1})}); //<<--- I want this line
      })
      .catch(err => {
        res.status(400).send("unable to save CryptoWallet to databse");
      });
});

ОБНОВЛЕНИЕ Я получаю его в POST и сохраняю в базе данных.Прямо сейчас я могу получить ответ только от первого POST-маршрута , есть ли способ получить ответ от второго POST-маршрута , моя конечная цель - получить _id, созданныйМонго в ответ.

Спасибо, вперед!

1 Ответ

0 голосов
/ 24 октября 2018

Вам не хватает отправки ответа на ваш первый POST запрос (/generateSeed).addToAPI функция должна дождаться окончания второго POST запроса и отправить свой собственный ответ.Так что в основном это должно выглядеть примерно так:

function addToAPI(address, seedPhrase, res){
  var NewUser = {
    publicK: address,
    seed: seedPhrase
  }

  axios.post('http://localhost:3000/CryptoWallet/add/createCryptoWallet', NewUser)
    .then((response)=>{
       res.json(response.data); // axios wrappes the body of response into `data` object 
    })
    .catch(error=>{
      console.log(error);
      res.status(500).('Some error occured');
    })
}
...