Rest 如何使用子查询筛选对象?

Rest 如何使用子查询筛选对象?,rest,parse-platform,Rest,Parse Platform,使用与Parse REST api交互。我正在尝试为用户获取所有没有相关B的As 我知道我可以为用户获得Bs: parseClient.getObjects('B', { where: { user: { __type: "Pointer", objectId: "id here", className: "_User" } }, keys: 'a' }, callback) 然后提取对象ID以获取坏的A ID aIds = [

使用与Parse REST api交互。我正在尝试为用户获取所有没有相关
B
A
s

我知道我可以为用户获得Bs:

parseClient.getObjects('B', {
  where: {
    user: { 
      __type: "Pointer",
      objectId: "id here",
      className: "_User"
    }
  },
  keys: 'a'
}, callback)
然后提取对象ID以获取坏的A ID

aIds = [ Bs ].map(function (b) {
  return b.a.objectId
})
然后查询与id匹配的As负数

parseClient.getObjects('A', {
  where: {
    objectId: { $nin: aIds }
  }
}, callback)
但是一个用户可以拥有比查询限制200更多的B。如何重写它以使用子查询


$dontSelect

嵌套的键参数不起作用,这使得类似于此的内容变得平淡

parseClient.getObjects('A', {
  where: {
    objectId: {
      $dontSelect: {
        query: {
          className: 'B',
          where: { user query },
        },
        key: 'a.objectId 
      }
    }
  }
}, callback)

// { code: 105, error: 'invalid field name: ' }
$notInQuery

似乎没有办法将$notInQuery放入
where
的根目录或引用当前对象

parseClient.getObjects('A', {
  where: {
    $notInQuery: {
      className: 'B',
      where: { user query },
      key: 'a'
    }
  }
}, callback)

// { code: 102, error: 'Invalid key $notInQuery for find' }

救命啊

这是解析模型的一个限制,我找到的唯一解决方法是相应地调整您的模式

一种方法是使用
a
上包含所有相关
User
指针的关系,然后对关系字段执行
$ne

where: {
  'relationColumn' : {
    '$ne': {
      '__type': 'Pointer',
      'className': '_User',
      'objectId': 'user b id here'
    }
  }
}

啊,那看起来很有希望。我明天再看一看。第二看,不建议在数组关系()中存储大量数据。建议最多为100个项目使用
array
类型的列,而
relation
类型的列用于更大的列表(它在幕后创建完整的集合,因此可以处理数百万行)。