Мне нужна помощь, я боролся с этим в течение нескольких дней без удачи. Я изменил пример блога, чтобы обработать мой раздел проэктов. Мне удалось заставить его работать из настраиваемого доступного для записи файла хранилища, я могу выполнить все операции CRUD внутри хранилища, и они обновляются в компонентах, которые в них нуждаются. Все, кроме страницы [slug] .svelte.
, кажется, что даже файл [slug]. JSON. js имеет подписку, контекстный модуль [slug] .svelte не может получить хранилище изменения после того, как они сделаны.
вот мой файл [slug]. JSON. js.
import proyectos from "./_projectsStore.js";
let projects;
proyectos.subscribe(p => {
projects = p;
})
const lookup = new Map();
projects.forEach(project => {
lookup.set(project.slug, JSON.stringify(project));
});
export function get(req, res, next) {
// the `slug` parameter is available because
// this file is called [slug].json.js
const { slug } = req.params;
if (lookup.has(slug)) {
res.writeHead(200, {
'Content-Type': 'application/json'
});
res.end(lookup.get(slug));
} else {
res.writeHead(404, {
'Content-Type': 'application/json'
});
res.end(JSON.stringify({
message: `Not found`
}));
}
}
, поскольку, как мне кажется, это проблема с функцией предварительной загрузки, которая не знает об изменениях после того, как они сделаны.
<script context="module">
export async function preload({ params, query }) {
// the `slug` parameter is available because
// this file is called [slug].html
const res = await this.fetch(`portafolio/${params.slug}.json`);
const data = await res.json();
if (res.status === 200) {
return { project: data };
} else {
this.error(res.status, data.message);
}
}
</script>
любая идея?