我想使用Sensenet Odata Rest API查询空的字段,哪些字段不为空。他们的文档提到了一个名为“length”的过滤函数。我试图用长度操作查询字段,但它失败并出现错误。
这是我使用的过滤器
// Only send 'new user' event to previously connected clients, not the new client.
var i = 0;
for(i=0;i<allClients.length;i++){
allClients[i].emit('new user', socket.address + '_' + socket.port);
}
Sense / Net 6.5.4.9496
例外
.clipboard {
overflow:auto;
max-height:240px
}
Wiki Link http://wiki.sensenet.com/OData_REST_API
答案 0 :(得分:2)
length 操作错误地包含在支持的方法列表中,我们为此道歉。 SenseNet将这些过滤器编译为 Lucene 查询,并且无法在Lucene中编写对字段执行操作的此类查询。
(其余方法,如 substringof 或 startswith 可以很容易地编译成通配符表达式,因此应该可以工作)
很遗憾&#39;空&#39; Lucene也不支持表达式,因为它们的文档/术语结构。因此,以下表达式也不起作用:
Description eq ''
修改:作为解决方法,开发人员可以创建自定义字段索引处理程序。
对于要检查空白的每个字段(例如 Description ),您可以在内容类型定义中创建技术隐藏的bool字段( IsDescriptionEmpty )。您必须创建和定义的唯一事项是自定义字段索引处理程序类。在你的情况下,它将继承内置的 bool字段索引处理程序,你可以根据目标字段(在本例中为Description)是否为空来返回一个布尔索引值。
在此之后,您可以定义搜索范围,如下所示:
+Type:File +IsDescriptionEmpty:true
请查看下面的wiki文章和索引处理程序示例的源代码。