2016-03-30 14 views
0

ich ein Mungo-Schema wie die habe unten:Wie mutieren verschachteltes Objekt mit graphql

import mongoose from 'mongoose' 

const ProjectSchema = new mongoose.Schema({ 
    name: { 
    type: String 
    }, 
    owner: { 
    type: String 
    }, 
    member: { 
    type: String 
    }, 
    updatedDate: { 
    type: Date 
    }, 
    description: { 
    type: String 
    }, 
    folder: { 
    type: mongoose.Schema.Types.ObjectId, 
    ref: 'Folder' 
    }, 
    dataSources: [{ 
    name: { 
     type: String 
    }, 
    updatedDate: { 
     type: Date 
    }, 
    }], 
    propjectHistory: [{ 
    no: { 
     type: Number 
    }, 
    member: { // is this reference or just a string? 
     type: String 
    }, 
    action: { 
     type: String 
    }, 
    updatedDate: { 
     type: Date 
    }, 
    }] 
}) 

const Project = mongoose.model('Project', ProjectSchema) 

Und ich integrierte mit graphql mit Graffiti und Graffiti-Mungo. Allerdings zeigt die Graphiql Dokumentation, dass ich nur die, die unten:

addProject(input: addProjectInput!): 

name: String 
owner: String 
member: String 
updatedDate: Date 
description: String 
folder: ID 
clientMutationId: String! 

ich erfolgreich Projekt mit einer Mutation Abfrage nur die Parameter mit Hilfe hinzufügen könnte, aber es scheint, dass ich nicht einmal Mutation Abfrage mit projectHistory senden und Datasource , die in das Projektschema eingebettet sind.

Allerdings kann ich auf ProjectHistory und dataSource zugreifen, wenn ich Suchabfragen senden.

Ich kann keine Dokumentation zu dem Problem finden.

Probe Mutationsabfrage ohne verschachtelte funktioniert.

mutation { 
    addProject(input:{ 
    clientMutationId: "1" 
    name: "testproject", 
    owner: "keonwoo", 
    member: "keonwoo", 
    updatedDate: "2015-07-24T13:23:15.580Z", 
    description: "this is test project", 
    folder: "56fb93403eab9e1c14358fb7" 
    }){ 
    clientMutationId 
    changedProjectEdge{ 
     node{ 
     _id 
     name 
     updatedDate 
     } 
    } 
    } 
} 

die obige Mutation gibt die folgenden:

{ 
    "data": { 
    "addProject": { 
     "clientMutationId": "1", 
     "changedProjectEdge": { 
     "node": { 
      "_id": "56fb93ab3eab9e1c14358fb8", 
      "name": "testproject", 
      "updatedDate": "2015-07-24T13:23:15.580Z" 
     } 
     } 
    } 
    } 
} 

ich nicht Client verwenden wie Relais.

+0

Um zu helfen, müsste ich Ihre Client-Seitenmutation und Ihre serverseitige Mutation sehen. Ich verwende verschachtelte Typen (mit weiteren verschachtelten Typen) und ich hatte keine Probleme. – sboutzen

+0

@sboutzen Ich habe einige weitere Informationen hinzugefügt, aber die serverseitige Mutation wird von Graffiti-Mungo erzeugt und ich verwende keine Dinge wie Relay. Es gibt also nicht viel, was ich zur Verfügung stellen kann ... Wäre der Einsatz von Graffiti-Mungo ein Problem? –

+0

Ja, ich habe Graffiti-Mungo nicht probiert, also könnte ich nicht viel helfen. Ich kann jedoch sagen, dass in Ihrem mongoose-Dokument projectHistory und documentSource auf Listen generischer Objekte mit einigen Feldern eingestellt sind, was ich mir als Problem vorstellen könnte. Sie könnten versuchen, ein Subschema für diese beiden Typen zu erstellen und sie dann wie 'projectHistory: {type: [projectHistorySchema]}' zu verwenden. – sboutzen

Antwort

0

Das Problem war mit der Graffiti-Mungo-Bibliothek.

Es stellt sich heraus, dass Betreuer von Graffiti-Mungo nur Embedded-Objekt-Feature hinzugefügt und ich habe nicht aktualisiert.

Verwandte Themen