首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GROQ (理智) (React App)过滤日期数组(datetime)

使用GROQ (理智) (React App)过滤日期数组(datetime)
EN

Stack Overflow用户
提问于 2019-08-15 20:54:06
回答 1查看 515关注 0票数 0

我有一个可以多次放映的电影列表。我决定为用户提供一个为一部电影选择多个日期的选项(sanity studio界面)。

电影的模式如下:

代码语言:javascript
复制
export default {
  name: 'movie',
  title: 'Movie',
  type: 'document',
  fields: [
    {
      name: 'title',
      title: 'Title',
      type: 'string'
    },
    {
      name: 'dates',
      title: 'Dates',
      type: 'array',
      of: [
        {
          type: 'datetime',
          options: {
            dateFormat: 'YYYY-MM-DD',
            timeFormat: 'HH:mm',
            timeStep: 15,
            calendarTodayLabel: 'Today'
          }
        }
      ]
    },
    {
      name: 'poster',
      title: 'Poster',
      type: 'image',
      options: {
        hotspot: true
      }
    },
    {
      name: 'body',
      title: 'Body',
      type: 'blockContent'
    }
  ],

  preview: {
    select: {
      title: 'title',
      date: 'date',
      media: 'poster'
    }
  }
}

当前查询:

代码语言:javascript
复制
const query = groq`*[_type == "movie"]{
  title,
  dates,
  poster,
  body
}`

我需要用GROQ过滤dates数组中包含今天日期的电影

也许我把事情复杂化了,有人会想出更好的办法。

这个想法是为了避免数据库中的重复(一部电影可以播放3-6次)。这是我使用数组的唯一原因

EN

回答 1

Stack Overflow用户

发布于 2019-09-02 14:31:19

这个问题的解决方案应该是:

代码语言:javascript
复制
const query = '*[_type == "movie" && dates match $today]{title, dates, poster, body}'
const today = new Date().toISOString().split('T')[0]
client.fetch(query, {today}).then(result => {
  // movies which are showing today
})

但是,目前在字符串标记器中存在一个缺陷,该缺陷会削弱日期字符串匹配。在此期间,恐怕您唯一的选择是获取所有电影并过滤客户端。我们希望尽快解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57509974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档