亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從多個數據源構建 Nuxt 站點地圖

從多個數據源構建 Nuxt 站點地圖

蝴蝶不菲 2023-08-18 10:17:40
我正在 SSR 模式下使用 Nuxt,并希望為多個路線/數據集構建動態站點地圖。我現在面臨的問題是 async/await 函數只允許“data”作為變量。使用“post”作為變量的相同函數會導致“地圖函數不存在”這是我的 Nuxt.config.js 文件中的內容  sitemap: {    hostname: "https://example.com",    routes: async () => {      let { data } = await axios.get('https://api.example.com/api/v1/locations');      data = data.data.map((loc) => `/locations/${loc.slug}`);      console.log(data);      let { posts } = await axios.get('https://cms.example.com/wp-json/wp/v2/posts');      posts = posts.map((post) => `/posts/${post.slug}`);      console.log(posts);      data.concat(posts);      return data    },    path: '/sitemap.xml'  }我正在尋找的結果輸出應采用如下格式:[  '/locations/location-one',  '/locations/location-two',  '/locations/location-three',  '/posts/post-one',  '/posts/post-two',  '/posts/post-three',]我收到的錯誤:Cannot read property 'map' of undefined它發生在這條線上:posts = posts.map((post) => `/posts/${post.slug}`)所以在我看來,它不接受“posts”作為其自己的等待函數的有效變量。當第一個調用被注釋掉并且使用“數據”而不是“帖子”時,該調用工作正常
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

你的解構反應是錯誤的:

代替:

let { posts } = ...

經過:

let { data: posts } = ...

因為 Axios 總是返回一個“data”屬性,所以你只需將其重命名為“posts”即可。


查看完整回答
反對 回復 2023-08-18
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

你的數組串聯必須是這樣的:

data.concat(posts);

push()方法僅推送一項,而不是推送一組項目。

查看完整回答
反對 回復 2023-08-18
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號