如何在Rails项目上修复Neo.ClientError.Statement.SyntaxError?

时间:2018-07-18 02:07:39

标签: ruby-on-rails ruby neo4j

Rails项目源代码在下面

def initialize_by_type(type, profile)
  @initializers ||= {
    "patient" => ->(x) { Interests::PatientNode.new(x) },
    "family" => ->(x) { Interests::FamilyNode.new(x) },
    "care_staff" => ->(x) { Interests::CareStaffNode.new(x) },
    "researcher" => ->(x) { Interests::ResearcherNode.new(x) },
    "doctor" => ->(x) { Interests::DoctorNode.new(x) },
    "medical_staff" => ->(x) { Interests::MedicalStaffNode.new(x) },
    "company" => ->(x) { Interests::CompanyNode.new(x) },
    "other" => ->(x) { Interests::OthersNode.new(x) }
  }
  initializer = @initializers[type]
  raise ArgumentError, "unexpected type: #{type}" unless initializer
  initializer.call(profile)
end

neo4j错误在下面

ERROR Neo.ClientError.Statement.SyntaxError
Invalid input ':' (line 1, column 20 (offset: 19))
"MATCH (n:Interests::ResearcherNode) RETURN n LIMIT 25"
^

我正在从事医学SNS项目,该项目是由ruby on rails和neo4j DB开发的,在neo4j上存在一些问题,如何解决此问题?Related Image is Here

1 个答案:

答案 0 :(得分:0)

您的密码查询不正确。

您有这个(n:Interests::ResearcherNode),对于密码来说是正确的。 :表示标签的开头,或者使用::定义一个空标签(不允许)。

您的标签也称为ResearcherNode(1)或:ResearcherNode(2)。

如果(1)您的查询变为:

MATCH (n:Interests:ResearcherNode) RETURN n LIMIT 25

如果为(2),则需要用反引号将标签名称引起来:

MATCH (n:Interests:`:ResearcherNode`) RETURN n LIMIT 25