Buildfire - 查询选择器的麻烦

时间:2017-08-24 16:56:16

标签: buildfire

我有两个unix时间戳,一个开始时间(startDate)和一个结束时间(endDate)。使用下面的时刻函数给我一天的开始/结束:

search = {
  "end": { "$lte": moment(endDate).startOf('day').unix() },
  "start": {"$gte": moment(startDate).startOf('day').unix() }
};

然后我将搜索结果传递给我的buildfire函数:

buildfire.publicData.search(search ,'routes', (err, res) => {})

我的 res 是一系列对象,每个对象都有一个数据属性,其中包含开始结束属性在里面:

res = [
  {
    data: {
      end: 1503554370297,
      start: 1503554368711
    }
  }
]

所有结果都在返回,没有任何内容被过滤。

1 个答案:

答案 0 :(得分:1)

以下是docs数据存储区搜索https://github.com/BuildFire/sdk/wiki/How-to-use-Datastore#buildfiredatastoresearchoptions-tag-optional-callback

我相信您没有正确发送过滤器。

您正在发送:

search = {
  "end": { "$lte": moment(endDate).startOf('day').unix() },
  "start": {"$gte": moment(startDate).startOf('day').unix() }
};
buildfire.publicData.search(search ,'routes', (err, res) => {})

它应该更像是

var options = {
  "filter":{
        "$json.end": { "$lte": moment(endDate).startOf('day').unix() },
        "$json.start": {"$gte": moment(startDate).startOf('day').unix() }
  }
};
buildfire.publicData.search(search ,'routes', (err, res) => {})

基本上,由于filter对象options中的undefined属性,它会返回所有内容