cancel
Showing results for 
Search instead for 
Did you mean: 

Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.

[SOLVED] makeAugmentedSchema() doesn't play well if "from" is used as a property of a relation

Hi,
I've been trying to use inferSchema and makeAugmentedSchema on what will be a GRANDstack application.

Whether I use the GRANDstack template or my own code, inferSchema produced a good output and makeAugmentedSchema produced a series of errors.

Here is a basic overview of my structure:

  "dependencies": {
    "apollo-server": "^2.10.0",
    "apollo-server-express": "^2.10.0",
    "cypher-tagged-templates": "^3.0.0",
    "dotenv": "^8.2.0",
    "neo4j-driver": "^4.0.1",
    "neo4j-graphql-js": "^2.12.1",
    "nodemon": "^2.0.2"
  }

EDIT: Note: I was using "from: date" as properties on many of the relations to provide versioning, and since the error was plastered with .from, I renamed this property to "startDate" and re-ran everything. It worked!
Note to self, "from" is a reserved property for relations.

Here is the error from makeAugmentedSchema():

C:\Github\dev\node_modules\graphql\validation\validate.js:108
    throw new Error(errors.map(function (error) {
    ^

Error: Field "_AddCompetencyHAS_PRIMARY_DOMAIN_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_PRIMARY_DOMAIN_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_PRIMARY_DOMAIN_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_TARGET_COMPETENCY_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_TARGET_COMPETENCY_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_TARGET_COMPETENCY_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_ASSESSMENT_CRITERIA_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_ASSESSMENT_CRITERIA_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_ASSESSMENT_CRITERIA_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_SHORT_NAME_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_SHORT_NAME_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_SHORT_NAME_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_LV0_ACTIVITIES_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_LV0_ACTIVITIES_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_LV0_ACTIVITIES_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_LV1_ACTIVITIES_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_LV1_ACTIVITIES_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_LV1_ACTIVITIES_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_LV2_ACTIVITIES_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_LV2_ACTIVITIES_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_LV2_ACTIVITIES_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_LV3_ACTIVITIES_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_LV3_ACTIVITIES_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_LV3_ACTIVITIES_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_LV4_ACTIVITIES_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_LV4_ACTIVITIES_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_LV4_ACTIVITIES_relPayload.from" can only be defined once.

Field "_AddCompetencyHAS_LV5_ACTIVITIES_relPayload.from" can only be defined once.

Field "_UpdateCompetencyHAS_LV5_ACTIVITIES_relPayload.from" can only be defined once.

Field "_MergeCompetencyHAS_LV5_ACTIVITIES_relPayload.from" can only be defined once.

Field "_AddCompetencyIN_GROUP_relPayload.from" can only be defined once.

Field "_UpdateCompetencyIN_GROUP_relPayload.from" can only be defined once.

Field "_MergeCompetencyIN_GROUP_relPayload.from" can only be defined once.

Field "_AddPlanHAS_COMPETENCY_LIST_relPayload.from" can only be defined once.

Field "_UpdatePlanHAS_COMPETENCY_LIST_relPayload.from" can only be defined once.

Field "_MergePlanHAS_COMPETENCY_LIST_relPayload.from" can only be defined once.

Field "HAS_PRIMARY_DOMAIN.from" can only be defined once.

Field "HAS_TARGET_COMPETENCY.from" can only be defined once.

Field "HAS_ASSESSMENT_CRITERIA.from" can only be defined once.

Field "HAS_SHORT_NAME.from" can only be defined once.

Field "HAS_LV0_ACTIVITIES.from" can only be defined once.

Field "HAS_LV1_ACTIVITIES.from" can only be defined once.

Field "HAS_LV2_ACTIVITIES.from" can only be defined once.

Field "HAS_LV3_ACTIVITIES.from" can only be defined once.

Field "HAS_LV4_ACTIVITIES.from" can only be defined once.

Field "HAS_LV5_ACTIVITIES.from" can only be defined once.

Field "HAS_COMPETENCY_LIST.from" can only be defined once.

Field "IN_GROUP.from" can only be defined once.
    at assertValidSDL (C:\Github\dev\node_modules\graphql\validation\validate.js:108:11)
    at Object.buildASTSchema (C:\Github\dev\node_modules\graphql\utilities\buildASTSchema.js:71:34)
    at Object.buildSchemaFromTypeDefinitions (C:\Github\dev\node_modules\graphql-tools\dist\generate\buildSchemaFromTypeDefinitions.js:23:28)
    at makeExecutableSchema (C:\Github\dev\node_modules\graphql-tools\dist\makeExecutableSchema.js:26:29)
    at makeAugmentedExecutableSchema (C:\Github\dev\node_modules\neo4j-graphql-js\dist\augment\augment.js:126:49)
    at makeAugmentedSchema (C:\Github\dev\node_modules\neo4j-graphql-js\dist\index.js:311:53)
    at Object.<anonymous> (C:\Github\dev\inferAug.js:34:16)
    at Module._compile (internal/modules/cjs/loader.js:774:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    at Module.load (internal/modules/cjs/loader.js:641:32)

Here is the relevant part of the inferred schema: Notice the duplicate "from"s.

type HAS_PRIMARY_DOMAIN @relation(name: "HAS_PRIMARY_DOMAIN") {
  from: Competency!
  to: Domain!
  from: String!
}

type HAS_TARGET_COMPETENCY @relation(name: "HAS_TARGET_COMPETENCY") {
  from: Competency!
  to: TargetCompetency!
  from: String!
}

type HAS_ASSESSMENT_CRITERIA @relation(name: "HAS_ASSESSMENT_CRITERIA") {
  from: Competency!
  to: AssessmentCriteria!
  from: String!
}

type HAS_SHORT_NAME @relation(name: "HAS_SHORT_NAME") {
  from: Competency!
  to: ShortName!
  from: String!
}

type HAS_LV0_ACTIVITIES @relation(name: "HAS_LV0_ACTIVITIES") {
  from: Competency!
  to: Lv0Activities!
  from: String!
}

type HAS_LV1_ACTIVITIES @relation(name: "HAS_LV1_ACTIVITIES") {
  from: Competency!
  to: Lv1Activities!
  from: String!
}

type HAS_LV2_ACTIVITIES @relation(name: "HAS_LV2_ACTIVITIES") {
  from: Competency!
  to: Lv2Activities!
  from: String!
}

type HAS_LV3_ACTIVITIES @relation(name: "HAS_LV3_ACTIVITIES") {
  from: Competency!
  to: Lv3Activities!
  from: String!
}

type HAS_LV4_ACTIVITIES @relation(name: "HAS_LV4_ACTIVITIES") {
  from: Competency!
  to: Lv4Activities!
  from: String!
}

type HAS_LV5_ACTIVITIES @relation(name: "HAS_LV5_ACTIVITIES") {
  from: Competency!
  to: Lv5Activities!
  from: String!
}

type HAS_COMPETENCY_LIST @relation(name: "HAS_COMPETENCY_LIST") {
  from: Plan!
  to: CompetencyGroup!
  from: String!
  planId: String!
}

type IN_GROUP @relation(name: "IN_GROUP") {
  from: Competency!
  to: CompetencyGroup!
  from: String!
  order: String!
  planId: String!
}
0 REPLIES 0