【问题标题】:Cannot retrieve Title from Strapi无法从 Strapi 检索标题
【发布时间】:2021-07-15 21:09:18
【问题描述】:

我有一个名为 posts 的集合类型,它具有以下值:

现在要获取 api,我的 lib 文件夹中有一个文件,其中包含以下代码:

export async function getPosts() {
var api_base_url = process.env.API_BASE_URL;
const response = await fetch(api_base_url + "/posts");
const posts = await response.json();
return posts;
}

export async function getPost(postId) {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/posts/" + postId);
    const post = await response.json();
    return post;
}

export async function getPostFromTitle(postTitle, lang) {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/posts");
    const posts = await response.json();
    var postObject = {};
    posts.forEach(post => {
        if (post['Title (' + lang.toUpperCase() + ')'] == postTitle) {
            postObject = post;
        }
    });
    return postObject;
}

现在为了显示这个,我使用了以下代码:

import { getPosts, getPostFromTitle } from '../lib/apiGet'

export async function getStaticProps() {
  const allPosts = JSON.parse(JSON.stringify(await getPosts()));
  const postsTitle = JSON.parse(JSON.stringify(await getPostFromTitle(postTitle, lang)));
  //Parse and Stringify done since nextJs was having weird errors accepting the standard json from API
  return {
    props: {
      allPosts,
      postsTitle
    }
  }
}

export default function Home({ allPosts, postsTitle }) {
  return (
    <div>
      <body>            
        <ul>
        {allPosts.map(post => (
            <h1><u>
            {console.log(post.id)}
              {post.id}
            </u>            
            </h1>
          ))}
        </ul>
        <ul>
        {postsTitle.map((postTitle, lang) => (
            <h1><u>
            {console.log(postTitle.Title)}
              {postTitle.Title}
            </u>            
            </h1>
          ))}
        </ul>
      </body>
    </div>
  );
}

我能够正确获取 id,但是当我打印 Title 时出现此错误。

那么如何正确检索我的标题?

【问题讨论】:

    标签: javascript next.js strapi


    【解决方案1】:

    我认为问题可能出在您的前端功能中;

    export async function getPostFromTitle(postTitle, lang) {
        var api_base_url = process.env.API_BASE_URL;
        const response = await fetch(api_base_url + "/posts");
        const posts = await response.json();
        var postObject = {};
        posts.forEach(post => {
            if (post['Title (' + lang.toUpperCase() + ')'] == postTitle) {
                postObject = post;
            }
        });
        return postObject;
    }
    

    它可能不会产生任何帖子 - 我会调试该功能。 “帖子” const 是否包含有效对象?返回值是正确的还是未定义的?

    一般来说,重写函数的过滤器部分(await response.json(); 之外的所有内容)以使用 js 过滤器功能会简单得多。

    类似的东西;

    return posts.filter(post => post['...'].includes(postTitle));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 1970-01-01
      • 2022-11-15
      相关资源
      最近更新 更多