如何更新 Contentful 条目中的单个字段?

How to update a single field in a Contentful entry?

需要帮助更新 CF 条目中的字段。这是一个没有默认值的下拉字段。

我尝试通过从 CF 环境获取条目、设置相应的字段并像这样更新它来做到这一点:

        client.getSpace(spaceId)
        .then((space) => {space.getEnvironment(environment)
            .then((environment) => {environment.getEntry('1234567890')
                .then((entry) => {
                    entry.fields = {
                        state: {
                            'en-US': 'Arizona'
                        }
                    }
                    return entry.update()
                })
            })
        })

这样做,state 值得到更新,但其他现有字段值被删除。

内容更新的 Contentful 文档在这里声明相同:https://www.contentful.com/developers/docs/references/content-management-api/#/introduction/updating-content,但我找不到实现他们建议的方法。

如何在不丢失所有其他字段的情况下更新 state 值?

当你这样做时

entry.fields = {
  state: {
    'en-US': 'Arizona'
  }
}

您将整个 fields 对象替换为仅包含一个键的新对象:state.
您应该设置 entry.fields.state

而不是设置 entry.fields

示例:

client.getSpace(spaceId)
    .then(space => space.getEnvironment(environment))
    .then(environment => environment.getEntry('1234567890'))
    .then(entry => {
        entry.fields.state = {
            'en-US': 'Arizona'
        }
        return entry.update()
    });

还有:我改变了你的使用方式.then()。 Promises 的好处之一是您不必嵌套回调。您在这里嵌套回调。您可以链接 .then() 调用以使您的代码更具可读性,就像我在上面的示例中所做的那样。参见:Aren't promises just callbacks?