【发布时间】:2021-09-10 10:12:39
【问题描述】:
我正在使用 sanity 创建一个 Web 应用程序。我在我的帖子模式中添加了一个数字“喜欢”字段。我可以在我的办公桌上看到点赞,但是当我查询 *[_type == 'post'] 时,我没有看到点赞字段。此外,当我尝试使用补丁功能增加“喜欢”字段时,客户抱怨该字段不存在。我该如何解决?
【问题讨论】:
标签: javascript reactjs next.js sanity
我正在使用 sanity 创建一个 Web 应用程序。我在我的帖子模式中添加了一个数字“喜欢”字段。我可以在我的办公桌上看到点赞,但是当我查询 *[_type == 'post'] 时,我没有看到点赞字段。此外,当我尝试使用补丁功能增加“喜欢”字段时,客户抱怨该字段不存在。我该如何解决?
【问题讨论】:
标签: javascript reactjs next.js sanity
我想这些问题是由于您的帖子中尚未包含数据。让我们分解一下:
由于您不能增加未定义/空值,您必须首先在您的 likes 字段上运行 setIfMissing 以确保它存在。这是一些伪代码:
client
.patch(postId)
.setIfMissing({ likes: 0 }) // ensure likes exist
.inc({ likes: 1 }) // And only then increment it
.commit()
默认情况下,GROQ 不会返回空值。这意味着,如果您的帖子没有设置 likes,您甚至不会在 API 返回的数据中看到此属性。
如果您需要显示点赞,可以使用 GROQ 的 coalesce 函数为点赞提供默认值。这是一个示例查询:
*[_type == "post"]{
...,
// Default likes to 0
"likes": coalesce(likes, 0),
}
希望这会有所帮助?
【讨论】: