Sapper Svelte 博客从服务器获取数据
Sapper Svelte Blog get Data from Server
我在让 Sapper expample 博客从数据库中获取真实数据时遇到问题。在示例中,数据由 js 文件提供。
我尝试用自己的数据替换数据,像 _post.js
中那样从服务器获取数据
import fetch from "node-fetch";
export default (async () => {
const response = await fetch('https://www.exampleserver.de/posts?id=1309');
let json = await response.text();
//json = JSON.parse(json);
posts = json;
return posts;
})()
但它给了我这个错误
TypeError: posts.map is not a function
at Object.<anonymous> (/Users/mark/01_m_code/01 SVELTE SAPPER/04 blog/__sapper__/dev/server/server.js:43:41)
我不得不承认我对 sapper 和 svelte 还很陌生,也许我对 slug 的真正工作原理没有正确的理解。任何帮助表示赞赏
一个async
函数总是returns一个承诺——当你看到posts.map is not a function
时,那是因为承诺没有映射方法(如果有,它不会不是你想要的)。
基本上,您需要 await
在需要该数据的路由处理程序中承诺:
import posts_promise from './_posts.js';
export async function get(req, res) {
const posts = await posts_promise;
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(posts));
}
我在让 Sapper expample 博客从数据库中获取真实数据时遇到问题。在示例中,数据由 js 文件提供。 我尝试用自己的数据替换数据,像 _post.js
中那样从服务器获取数据import fetch from "node-fetch";
export default (async () => {
const response = await fetch('https://www.exampleserver.de/posts?id=1309');
let json = await response.text();
//json = JSON.parse(json);
posts = json;
return posts;
})()
但它给了我这个错误
TypeError: posts.map is not a function
at Object.<anonymous> (/Users/mark/01_m_code/01 SVELTE SAPPER/04 blog/__sapper__/dev/server/server.js:43:41)
我不得不承认我对 sapper 和 svelte 还很陌生,也许我对 slug 的真正工作原理没有正确的理解。任何帮助表示赞赏
一个async
函数总是returns一个承诺——当你看到posts.map is not a function
时,那是因为承诺没有映射方法(如果有,它不会不是你想要的)。
基本上,您需要 await
在需要该数据的路由处理程序中承诺:
import posts_promise from './_posts.js';
export async function get(req, res) {
const posts = await posts_promise;
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(posts));
}