【问题标题】:Angular & Contentful: Cannot create asset inside a spaceAngular & Contentful:无法在空间内创建资产
【发布时间】:2022-01-18 03:02:45
【问题描述】:

我有一个使用 Contentful (v. 5.1.3) 的 Angular 应用程序。我想从 Angular 应用程序将资产上传到 Contentful。根据官方网站,正确的做法是:

client.getSpace('<space_id>')
.then((space) => space.createAsset({ ... })

请看这里:https://www.contentful.com/developers/docs/references/content-management-api/#/reference/assets

问题是Space 对象没有createAsset 方法。事实上,它仅有的方法是localesnamesystoPlainObject

我使用 npm install contentful 安装了 Contentful。包裹有什么问题吗? Space 对象被剥夺了所有有用的方法是有原因的吗?

谢谢,

亚历克斯

【问题讨论】:

    标签: angular contentful


    【解决方案1】:

    您需要使用contentful-management.js 库而不是contentful.js 库来创建资产。如果您在提供的链接上的代码示例中注意到,它正在使用管理库:

    const contentful = require('contentful-management')
    
    const client = contentful.createClient({
      accessToken: '<content_management_api_key>'
    })
    
    client.getSpace('<space_id>')
    .then((space) => space.createAsset({
      fields: {
        title: {
          'en-US': 'Playsam Streamliner'
        },
        description: {
          'en-US': 'Streamliner description'
        },
        file: {
          'en-US': {
            contentType: 'image/jpeg',
            fileName: 'example.jpeg',
            upload: 'https://example.com/example.jpg'
          }
        }
      }
    }))
    .then((asset) => asset.processForAllLocales())
    .then((asset) => console.log(asset))
    .catch(console.error)
    

    【讨论】:

    • 谢谢!我忘了有多种库类型。
    【解决方案2】:

    另请注意,space.createAsset(...)contentful-management@5 中已弃用,并在之后的某个时间完全删除。不幸的是,在撰写本文时,API 文档仍未反映此更改。

    作为替代方案,您可以在 environment 命名空间之外使用此函数:

    const space = await client.getSpace('space-id');
    const environment = await space.getEnvironment('master');
    const asset = await environment.createAsset({ ... });
    

    重大变更说明为here

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2022-06-23
      相关资源
      最近更新 更多