javascript - RavenDB 无法在 nodejs 上使用 AND 运算符执行搜索

标签 javascript node.js search nosql ravendb

如何通过 RavenDB 使用“AND”运算符执行搜索?

根据文档,我需要添加运算符枚举 ("AND"\"OR") 作为搜索函数的第三个参数。 https://ravendb.net/docs/article-page/4.0/nodejs/client-api/session/querying/how-to-use-search

出于某种原因,AND 运算符不起作用,它默认为我提供 OR 结果。

例子:

用户集合:

users/1-A: {
    firstName: 'Joe',
    lastName: 'Allen'
}

users/2-A: {
    firstName: 'Joe',
    lastName: 'Biden'
}

乌鸦的召唤:

session.query({ collection: 'Users' })
.search('firstName', 'Joe', 'AND') // search with AND operator
.search('lastName', 'Biden')
.all()

上面的调用返回两个文档。 合适的语法应该是什么?

谢谢

最佳答案

所以我找到了 node.js 的解决方案。 “AND” 枚举作为第三个参数对我不起作用(根据此页面:https://ravendb.net/docs/article-page/4.0/nodejs/client-api/session/querying/how-to-use-search)。

我找到了另一个页面: https://ravendb.net/docs/article-page/4.0/nodejs/indexes/querying/searching

它在查询中使用 andAlso() 函数来使用 "AND" 运算符并且它有效。

例子:

const joeBiden = session.query({ collection: 'Users' })
.search('firstName', 'Joe')
.andAlso()
.search('lastName', 'Biden')
.all()

这将只返回 Joe Biden 的文档。

请注意,它返回一个 promise 。

** 如果您调用 andAlso 函数并且在它之后没有查询,Raven 将引发错误,因此如果您循环遍历可能的搜索词,请记住排除 andAlso 函数在上次搜索中。

const joeBiden = session.query({ collection: 'Users' })
    .search('firstName', 'Joe')
    .andAlso()
    .search('lastName', 'Biden')
    .andAlso() // this line will cause Raven to throw an error
    .all()

关于javascript - RavenDB 无法在 nodejs 上使用 AND 运算符执行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71219196/

相关文章:

javascript - ajax post 成功后淡入淡出

javascript - 如何检查一个项目在javascript中的2个不同数组中的出现次数是否相同?

asp.net - 如何在 ASP.NET 中实现站点搜索?

javascript - Node.Js 中的 urlencoded 与 form-data

Jquery 匹配包含值的属性

jquery - 在链接上扩展搜索栏

javascript - 修复 DRY 代码帮助 javascript?

javascript - 我需要一个将两个坐标映射到 0 到 1 之间的伪随机值的 javascript 函数

javascript - CORS 和编号 'Access-Control-Allow-Origin'

windows - Node console.log 行为和 Windows 标准输出