2017-11-10 9 views
0

配列を文字列化しようとしていますが、これをmysqlデータベースに保存していて、それを解析すると解析しますが、 "Stringは配列を表すことができません"。ゲッターのタイプを後続で変更することができますか?もしそうなら、それはどのように行われますか?getterの型を変更する - graphqlを使って続ける

choices: { 
    type:Sequelize.TEXT, 
    get(){ 
    var val = this.getDataValue('choices'); 
    return val ? JSON.parse(val):null; 
    }, 
    set(val){ 
    if(val && typeof(val)!=='string'){ 
     val = JSON.stringify(val); 
    } 
    this.setDataValue('choices',val); 
    } 
}, 

答えて

0

これはsequelizeまたはmysqlでは問題ありませんでした。私はタイプ

import { attributeFields } from "graphql-sequelize"; 
import { GraphQLList, GraphQLString } from "graphql"; 
import { Question } from "../schemas/Question"; 
import ResponsePayload from "../schemas/ResponsePayload"; 
import _ from "lodash"; 

var base = _.assign(attributeFields(sequelize.models.question, { 
    exclude: ["id", "createdAt", "updatedAt"] 
}), { choices: { type: new GraphQLList(GraphQLString) }}); 

const CreateQuestion = { 
    type: ResponsePayload, 
    args: base, 
    resolve: ... 
}; 

export { CreateQuestion }; 

を上書きしなければならなかったところで、特に私は、これは選択肢のタイプをオーバーライド

var base = _.assign(attributeFields(sequelize.models.question, { 
    exclude: ["id", "createdAt", "updatedAt"] 
}), { choices: { type: new GraphQLList(GraphQLString) }}); 

var base = attributeFields(sequelize.models.question, { 
    exclude: ["id", "createdAt", "updatedAt"] 
}); 

を変更しなければならなかった私のGraphQL変異に問題がありましたsequelizeモデルのStringとして定義されていますが、GraphQLに関する限り配列である必要があります。

関連する問題