1

我正在使用 sapper 启动模板https://github.com/sveltejs/sapper-template并且对如何从外部 API(在本例中为 WordPress)获取数据感到困惑。

我已经修改了这个包含的/blog/_posts.js const = posts = [...all the json..]- 首先我尝试用它替换它,const = posts = fetch('http://localhost:9000/wp-json/wp/v2/posts'); 它给出了一个错误 fetch is not defined - 所以我包括了 node-fetch - 它现在在服务器中返回一个错误js posts.map is not a function

我一直在阅读以尝试找到答案并尝试过以下操作:

let posts;
export async function preload(page, session) {
    posts = await this.fetch('http://localhost:9000/wp-json/wp/v2/posts');
    return { posts }; 
}
export default posts;

_posts.js结果:

const contents = JSON.stringify(posts$1.map(post => { 
    TypeError: Cannot read property 'map' of undefined

不幸的是,我找不到任何文档或示例如何做到这一点 - 所以在我尝试学习 sapper 时伸出手,非常感谢您的建议。

4

1 回答 1

2

调用this.fetch(or fetch) 的结果是一个Response对象,而不是数据。你需要做这样的事情:

export async function preload(page, session) {
  const r = await this.fetch('http://localhost:9000/wp-json/wp/v2/posts');
  return {
    posts: await r.json()
  };
}

不要posts在函数体之外或export default<script>.

于 2019-09-09T14:33:55.343 回答