使用 shiki/kaiseki 与Parse REST api进行交互。我正在尝试为用户提供没有相关A
的所有B
个。
我知道我可以为用户获得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
})
然后查询As匹配id。
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' }
帮助!
答案 0 :(得分:0)
这是Parse模型的一个限制,我发现它的唯一方法是相应地调整你的模式。
您可以采用的一种方法是A
上的关系包含所有相关的User
指针,然后针对关系字段执行$ne
:
where: {
'relationColumn' : {
'$ne': {
'__type': 'Pointer',
'className': '_User',
'objectId': 'user b id here'
}
}
}