Блог Sapper Svelte получить данные с сервера

У меня проблемы с тем, чтобы блог 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$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)

Я должен признать, что я новичок в сапере и стройности, и, возможно, у меня нет надлежащего понимания того, как на самом деле работает пули. любая помощь приветствуется


person user3615408    schedule 01.10.2020    source источник


Ответы (1)


Функция async всегда возвращает обещание - когда вы видите posts$1.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));
}
person Rich Harris    schedule 02.10.2020
comment
Очень хорошее объяснение. Теперь он работает. Спасибо большое. Продолжайте хорошую работу. - person user3615408; 04.11.2020