我在尝试使用 Javascript 中的典型 http 请求更新 Contentful 条目时遇到了困难;我收到错误代码“VersionMismatch”,根据文档,这意味着:
当您尝试更新现有资产、条目或内容类型,并且未指定对象的当前版本或指定过时的版本时,会出现此错误。
但是,我已根据文档使用“X-Contentful-Version”标头参数指定了条目的当前版本,并使用“entry.sys.revision”中的动态属性值作为参数值(以及对当前版本进行硬编码,加上一堆不同的数字,但我总是收到相同的错误)。这篇文章报告了完全相同的问题,但似乎通过添加此标头参数解决了。
这是我当前的代码,它也使用 Contentful API 从我的 Contentful 空间检索条目,但由于特定要求,我必须使用纯 Javascript 来将数据放回:
var client = contentful.createClient(
{
space: space_id,
accessToken: client_token
}
);
client.getEntry(entry_id).then((entry) => entry).then(function(entry) {
// update values of entry
entry.fields.title = "Testing";
// post data to contentful API
var request = new XMLHttpRequest();
request.open('PUT', 'https://api.contentful.com/spaces/' + space_id + '/entries/' + entry_id);
request.setRequestHeader('Authorization', 'Bearer my_access_token');
request.setRequestHeader('Content-Type', 'application/vnd.contentful.management.v1+json');
request.setRequestHeader('X-Contentful-Content-Type', entry.sys.contentType.sys.id);
// setting the 'X-Contentful-Version' header with current/soon to be old version
request.setRequestHeader('X-Contentful-Version', …Run Code Online (Sandbox Code Playgroud) 我不知道如何获取内容丰富的访问令牌。我尝试了很多搜索、复制/粘贴各种“解决方案”,但没有一个对我有用。请帮助我解决这个问题。
我一直在使用Contentful Management Javascript SDK更新Contentful空间中的条目,并且能够使用文本更新简单字段没有问题.
我的问题是我无法弄清楚如何在我的条目中更新图像 ; 我可以将图像上传到媒体部分,但我无法将任何图像分配给入口属性.
这是可能的还是Contentful的限制?
到目前为止,这是我的代码:
client.getSpace(CONTENTFUL_SPACE).then((space) => {
// retrieve my Contentful space
space.getEntry(CONTENTFUL_ENTRY).then(function (entry) {
// get a specific entry
// create a new asset in my Contentful media section
space.createAssetWithId(RANDOM_ID, {
fields: {
file: {
'en-GB': {
contentType: 'image/jpeg',
fileName: 'test.jpg',
upload: 'http://www.example.com/test.jpg'
}
}
}
})
.then(asset => asset.processForAllLocales())
.then(asset => asset.publish())
.then(function(asset) {
// assign uploaded image as an entry field
// (none of these work:)
entry.fields["image"]["en-GB"] …Run Code Online (Sandbox Code Playgroud) 我想添加一个资产和一个条目。我正在使用表单输入一些数据并上传图像,所有这些都在一个 API 调用中完成。我使用 cloudinary 来存储图像,但 Contentful-Management 给了我 409 状态代码和“版本不匹配”错误。
这些是我在下面采取的步骤(如果您看到我忽略的步骤,请添加任何步骤,非常感谢)
#1. Get space by space id
#2. Get environment
#3. Create Entry
#4. Create a new asset
#5. Assign uploaded image as an entry field
Run Code Online (Sandbox Code Playgroud)
“ data ”是我发布帖子所需的所有数据,uploadHref 是来自 Cloudinary 的单个图像的链接。
#1. Get space by space id
#2. Get environment
#3. Create Entry
#4. Create a new asset
#5. Assign uploaded image as an entry field
Run Code Online (Sandbox Code Playgroud) contentful contentful-management next.js contentful-api headless-cms