我遇到了一个奇怪的问题。我最初使用桌面版和.Net Core Web API开发了数据库和API。我写了一个搜索查询来根据相互关系找到节点:
var results = _client.Cypher
.Match("(n:Person {userId: {userId}})-[]->(ct:ConnectionType)<-[]-(other:Person)")
.Where("ct.key IN {ctQuery}")
.WithParams(new
{
searchDto.userId,
ctQuery = searchDto.connectionType
})
.ReturnDistinct((other) => new
{
Profile = other.As<SearchResultsDto>()
}).Results;
在本地工作时,一切正常。但是,当我将API和数据库传输到Linux服务器时,返回的结果为空。
问题似乎与我使用的数据类型有关。连接的节点的“键”属性是整数。 ctQuery对象是一个int []。在桌面上时,一切正常。我打开浏览器并使用相同的查询,但连接到Enterprise Server时仍然没有任何结果。连接到桌面数据库后,我得到了结果。
如果将int []更改为字符串[],我就能得到结果。
企业内部是否存在防止查询int数组的设置?如果可以,可以更改吗? 我有很多查询都将使用该键,而我宁愿不要经常将字符串转换为ints然后再返回。
答案 0 :(得分:1)
没有您所描述的设置。
在Enterprise Server中加载数据时,您可能错过了字符串到整数的转换。
您可以运行查询以将ConnectionType
键的所有 String 值转换为 Integer 。
MATCH (n:ConnectionType)
SET n.key= toInt(n.key)