Angular & Contentful:无法在 space 中创建资产
Angular & Contentful: Cannot create asset inside a space
我有一个使用 Contentful(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
方法。事实上,它仅有的方法是 locales
、name
、sys
和 toPlainObject
.
我用 npm install contentful
安装了 Contentful。包裹有什么问题吗? Space
对象被剥夺了所有有用的方法是有原因的吗?
谢谢,
亚历克斯
您需要使用 contentful-management.js
库而不是 contentful.js
库来创建资产。如果您在所提供的 link 的代码示例中注意到,它正在使用管理库:
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)
另请注意,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。
我有一个使用 Contentful(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
方法。事实上,它仅有的方法是 locales
、name
、sys
和 toPlainObject
.
我用 npm install contentful
安装了 Contentful。包裹有什么问题吗? Space
对象被剥夺了所有有用的方法是有原因的吗?
谢谢,
亚历克斯
您需要使用 contentful-management.js
库而不是 contentful.js
库来创建资产。如果您在所提供的 link 的代码示例中注意到,它正在使用管理库:
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)
另请注意,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。