jus*_*arr 0 contentful contentful-management next.js contentful-api headless-cms
我想添加一个资产和一个条目。我正在使用表单输入一些数据并上传图像,所有这些都在一个 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)
内容丰富的 DevRel 在这里。
如果您遇到VersionMisMatch大多数情况,则说明您在创建或更新后不会重新分配资源。Contentful 的 API 使用新的条目版本响应每个写入操作,这样就可以防止覆盖较新的数据。
我重写了您的示例(未经测试),以使用 API 的结果重新分配返回的对象entry和对象。asset
async function createEntryWithAsset() {
const space = await client.getSpace(SPACE_ID);
const environment = await space.getEnvironment("master");
/**
* Entry creation and publish
*/
let entry = await environment.createEntry("propertyListings", {
/* ... */
});
// reassign `entry` to have the latest version number
entry = await entry.publish();
/**
* Asset creation and publish
*/
let asset = await environment.createAssetWithId(
faker.datatype.number(4).toString(),
{
/* ... */
}
);
// reassign `asset` to have the latest version number
asset = await asset.processForAllLocales();
asset = await asset.publish();
/**
* Update entry with new asset
*/
entry.fields["images"]["en-US"] = {
sys: {
id: asset.sys.id,
linkType: "Asset",
type: "Link",
},
};
entry = await entry.update();
entry = await entry.publish();
}
createEntryWithAsset();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2981 次 |
| 最近记录: |