svelte - Sapper Svelte 博客从服务器获取数据
问题描述
我在让 Sapper 示例博客从数据库中获取真实数据时遇到问题。在示例中,数据来自 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$1.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
函数总是返回一个promise——当你看到时posts$1.map is not a function
,那是因为promise没有map方法(如果有,它就不是你想要的)。
基本上,您需要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));
}
推荐阅读
- mongodb - 如何在 Mongodb 中获取对象数组的查询?
- python - 如果 B[i, j] == 1,则从 A 创建包含每列 A 行平均值的新矩阵,其中 B 是邻接矩阵
- html - 需要帮助获得正确的布局
- firebase-hosting - 已部署的 Web 应用程序仍会在 Chrome javascript 控制台 Flutter 中打印所有注释掉的打印语句
- java - 从 thymeleaf 中的 java 控制器获取值后,如何为表生成此动态列?
- c# - 如何仅提取 Xbim 中最低级别的对象?
- html - Ionic 4,将一个file.ts之间的数据传递到另一个file.ts?
- javascript - Vue.js 处理来自条形码扫描仪的输入
- python - 如何使用 Python 创建自动警报系统(例如弹出窗口和任何东西)
- sql - 从sql中的字符串中提取电子邮件域