最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Axios之后获得请求解析,因此我的变量不会被分配

IT培训 admin 8浏览 0评论

Axios之后获得请求解析,因此我的变量不会被分配

在我的用户控制器上,我想发送一个get请求来接收json响应。

当响应到来时,我想将值赋给变量calles embed,但渲染部分:

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });

在轴功能完成之前发生...让我留下一个空物体。

为了等待响应,我需要做什么......然后渲染模板?

请注意,控制台日志2在此代码中的控制台日志1之前发生:

exports.getUserBySlug = async (req, res, next) => {

  const user = await User.findOne({ slug: req.params.slug })
  let embed = {}
  if (!user) return next();

  axios.get(`;url=${user.musicLink}`)
  .then(response => {
    embed = response.data
  console.log('1: ', embed)

  })
  .catch(error => {
    console.log(error);
  })

  console.log('2: ', embed)

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });
};
回答如下:

请求是异步的。你需要添加一个await更多

exports.getUserBySlug = async (req, res, next) => {

  const user = await User.findOne({ slug: req.params.slug })
  let embed = {}
  if (!user) return next();

  await axios.get(`https://soundcloud/oembed?format=json&url=${user.musicLink}`)
  .then(response => {
    embed = response.data
  console.log('1: ', embed)

  })
  .catch(error => {
    console.log(error);
  })

  console.log('2: ', embed)

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });
};

另外我建议不要将async/await.then电话混在一起。

exports.getUserBySlug = async (req, res, next) => {

  const user = await User.findOne({ slug: req.params.slug })
  let embed = {}
  if (!user) return next();

  try {
    const response = await axios.get(`https://soundcloud/oembed?format=json&url=${user.musicLink}`)
    embed = response.data
  } catch (e) {
    console.error(e)
  }

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });
};

Axios之后获得请求解析,因此我的变量不会被分配

在我的用户控制器上,我想发送一个get请求来接收json响应。

当响应到来时,我想将值赋给变量calles embed,但渲染部分:

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });

在轴功能完成之前发生...让我留下一个空物体。

为了等待响应,我需要做什么......然后渲染模板?

请注意,控制台日志2在此代码中的控制台日志1之前发生:

exports.getUserBySlug = async (req, res, next) => {

  const user = await User.findOne({ slug: req.params.slug })
  let embed = {}
  if (!user) return next();

  axios.get(`;url=${user.musicLink}`)
  .then(response => {
    embed = response.data
  console.log('1: ', embed)

  })
  .catch(error => {
    console.log(error);
  })

  console.log('2: ', embed)

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });
};
回答如下:

请求是异步的。你需要添加一个await更多

exports.getUserBySlug = async (req, res, next) => {

  const user = await User.findOne({ slug: req.params.slug })
  let embed = {}
  if (!user) return next();

  await axios.get(`https://soundcloud/oembed?format=json&url=${user.musicLink}`)
  .then(response => {
    embed = response.data
  console.log('1: ', embed)

  })
  .catch(error => {
    console.log(error);
  })

  console.log('2: ', embed)

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });
};

另外我建议不要将async/await.then电话混在一起。

exports.getUserBySlug = async (req, res, next) => {

  const user = await User.findOne({ slug: req.params.slug })
  let embed = {}
  if (!user) return next();

  try {
    const response = await axios.get(`https://soundcloud/oembed?format=json&url=${user.musicLink}`)
    embed = response.data
  } catch (e) {
    console.error(e)
  }

  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });
};
发布评论

评论列表 (0)

  1. 暂无评论