我正在使用
GraphQL
API,并尝试实现一项搜索功能,允许用户按名字、姓氏或全名搜索患者。我目前正在使用带有 ILIKE
运算符的搜索条件,但在搜索中间有空格的全名(例如“Mary John”)时,我无法使其正常工作。
这是我正在使用的搜索条件的示例:
{
_text: {
field: "patient.firstName",
op: ILIKE,
value: "doe%john"
}
}
此条件应该匹配名字包含“Doe”后跟“John”的患者,但它没有返回预期结果。
我不确定我正在使用的 GraphQL API 是否按照我期望的方式支持带有通配符的 ILIKE 运算符,或者是否应该采取不同的方法。
这是我的问题:
不幸的是,您提出的问题是一个无法回答的问题。您正在寻找的答案不是 GraphQL 问题,而是您没有问过的后端实现问题。
像看待 JavaScript 一样思考 GraphQL。它没有规定查询应该做什么,或者它们应该如何工作。它描述了如何定义变量、如何定义函数或本机类型是什么。这是 JavaScript 的等效问题:
如何将变量传递到 JavaScript 函数中以使其按名字和姓氏在数据库中搜索用户?
那里的答案,就像这里的答案一样,完全取决于该函数的外观、该函数的作用以及该函数使用的数据库驱动程序。编写该函数的人几乎可以做到任何事情。
这是您所问的 GraphQL 问题的有效后端实现,答案是“您无法对查询执行任何操作来获得您想要的结果”。
const searchHandler = (parent, args, context, info) => {
return false;
}
这也是一个有效的后端实现,答案是“这取决于患者数据源正在做什么。它是否使用 MongoDB、Oracle、MySQL、Postgres、内存数据?它是否以奇怪的方式解析参数,通过字符串插值将它们从 JSON 转换为字符串?
const searchHandler = (parent, args, context, info) => {
const dataSource = context.dataSources.patient;
return dataSource.search(args);
}
所以您需要问的问题包括: