Javascript 使用引用字段更新contentful中的条目
我正在使用Contentful和Javascript,使用Contentful管理节点模块进行一个项目。 我正在尝试在包含新条目的条目中创建引用 我在浏览器控制台中收到以下消息:Javascript 使用引用字段更新contentful中的条目,javascript,contentful,contentful-management,Javascript,Contentful,Contentful Management,我正在使用Contentful和Javascript,使用Contentful管理节点模块进行一个项目。 我正在尝试在包含新条目的条目中创建引用 我在浏览器控制台中收到以下消息: Uncaught (in promise) Error: { "request": { "url": "https://api.contentful.com:443/spaces/59mi8sr8zemv/entries/2Bxpz2RgA4AQImQOssey8w/published", "hea
Uncaught (in promise) Error: {
"request": {
"url": "https://api.contentful.com:443/spaces/59mi8sr8zemv/entries/2Bxpz2RgA4AQImQOssey8w/published",
"headers": {
"Accept": "application/json, text/plain, */*",
"Content-Type": "application/vnd.contentful.management.v1+json",
"X-Contentful-User-Agent": "contentful-management.js/1.3.1",
"Authorization": "Bearer <my management-api key>",
"X-Contentful-Version": 373
},
"method": "put",
"payloadData": null
},
"status": 422,
"statusText": "Unprocessable Entity",
"requestId": "d00dde60cd564a8db84da90cd671b19f",
"message": "Validation error",
"details": {
"errors": [
{
"name": "notResolvable",
"link": {
"id": "2Yfc2H8q9OSoOccGcSg4aU",
"linkType": "Entry",
"type": "Link"
},
"path": [
"fields",
"link",
"en-US",
7
]
}
]
}
}
at errorHandler (main-addTrack.bundle.js:3096)
未捕获(承诺中)错误:{
“请求”:{
“url”:”https://api.contentful.com:443/spaces/59mi8sr8zemv/entries/2Bxpz2RgA4AQImQOssey8w/published",
“标题”:{
“接受”:“application/json,text/plain,*/*”,
“内容类型”:“application/vnd.contentful.management.v1+json”,
“X-Contentful-User-Agent”:“Contentful management.js/1.3.1”,
“授权”:“持票人”,
“X-Contentful-Version”:373
},
“方法”:“放置”,
“payloadData”:空
},
“地位”:422,
“状态文本”:“不可处理实体”,
“请求ID”:“d00dde60cd564a8db84da90cd671b19f”,
“消息”:“验证错误”,
“详情”:{
“错误”:[
{
“名称”:“不可解析”,
“链接”:{
“id”:“2YFC2H8Q9OSOCCGCSG4AU”,
“链接类型”:“条目”,
“类型”:“链接”
},
“路径”:[
“字段”,
“链接”,
“恩,我们”,
7.
]
}
]
}
}
at errorHandler(main addTrack.bundle.js:3096)
当我在内容丰富的web应用程序中查看时,新条目就在那里,但保存为草稿。我试图添加一个条目的条目说它需要更新
这是我用来创建和更新新条目的函数
function publishTrack(){
//-- Creates the new track in events, with ref to korrekt date
client.getSpace(<my_spaceId>)
.then((space) => {
space.createEntry('events', newTrack)
.then( event => {
eventID = event.sys.id;
(entry) => entry.publish()
//This function is gets the entry of choosen date
space.getEntry(dateId)
.then((entry) => {
//Gets the ID from the newly created event
var newId = {sys: {
id: eventID,
linkType: "Entry",
type:"Link"
}}
//Creates a reference field in dates for show & do
entry.fields.link["en-US"].push(newId)
//update the event
return entry.update()
space.getEntry(eventID)
.then ((eventID) => entry.publish())
})
space.getEntry(dateId)
.then ((entry) => entry.publish());
})
publishModal.style.display = 'block';
publishModal.style.opacity = '1';
publishModal.style.pointerEvents = 'auto';
publishModal.style.zIndex = '99999';
})
}//end publish track
函数publishTrack(){
//--在事件中创建新轨迹,参考korrekt date
client.getSpace()
.然后((空格)=>{
space.createEntry('events',newTrack)
。然后(事件=>{
eventID=event.sys.id;
(条目)=>entry.publish()
//此函数用于获取choosen日期的输入
space.getEntry(日期ID)
。然后((条目)=>{
//从新创建的事件获取ID
var newId={sys:{
id:eventID,
链接类型:“条目”,
类型:“链接”
}}
//在日期中为show&do创建引用字段
entry.fields.link[“en-US”].push(newId)
//更新事件
返回条目。更新()
space.getEntry(eventID)
.then((eventID)=>entry.publish())
})
space.getEntry(日期ID)
。然后((entry)=>entry.publish());
})
publishModal.style.display='block';
publishModal.style.opacity='1';
publishModal.style.pointerEvents='auto';
publishModal.style.zIndex='99999';
})
}//结束发布轨迹
请为任何错误道歉,这是我在stackowerflow上的第一篇帖子。看起来您的一个参考条目无法具体解析为
字段中的条目。链接[“en-US”][7]
(请注意错误消息中的“path”属性),确保在创建事件之前创建并发布了它。在引擎盖下,您正在执行HTTP PUT请求。这意味着用新资源替换现有资源。但是,您的有效负载为空:
“payloadData”:空
您会得到一个用户错误4xx(特别是422),这意味着您发送的有效负载无效。因此,这意味着Contentful不接受将该值设为null。然而,这似乎有点奇怪,因为您正在添加非空的newId
您试图用PUT替换的资源是/fields/link/en-US/7
。可能是因为某些中间资源不存在(例如,/fields
,/fields/link
,或/fields/link/en-US
),而子资源的放置不是由Contentful处理的。所以我需要先创建引用字段,然后创建条目?但是,当我需要引用字段中条目的ID时,我该如何做呢?