Angular & Contentful: невозможно создать ресурс внутри пространства
У меня есть приложение Angular, которое использует Contentful (v. 5.1.3). Я хочу загрузить ресурс в Contentful из приложения Angular. Согласно официальному сайту, правильный способ сделать это:
client.getSpace('<space_id>')
.then((space) => space.createAsset({ ... })
Смотрите здесь: https://www.contentful.com/developers/docs/references/content-management-api/
Проблема в том, что Space
объект не имеет createAsset
метод. Фактически, единственные методы, которыми он обладает, это locales
, name
, sys
а также toPlainObject
,
Я установил Contentful с npm install contentful
, Есть ли какая-то проблема с пакетом? Есть ли причина, почему Space
объект был лишен всех полезных методов?
Спасибо,
Alex
2 ответа
Вам нужно использовать 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)
Обратите также внимание на то, что
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({ ... });
Заметки о критических изменениях здесь.