Итак, я настроил api, используя Graphql и apollo, и мне удалось получить массив строк в mongoDB ... теперь я запрашиваю данные для реагирования с помощью Apollo и, похоже, не могу найти, как получить его, когда я получаю
error:[GraphQL error]: Message: String cannot represent an array value: [pushups,situps], Location: [object Object], Path: wods,0,movements
Моя схема настроена как:
const WodType = new GraphQLObjectType({
name: 'Wod',
fields: () => ({
id: { type: GraphQLID },
name: { type: GraphQLString },
movements: { type: GraphQLString },
difficulty: { type: GraphQLString },
group: {
type: GroupType,
resolve(parent, args) {
return Group.findById(parent.groupId);
}
}
}) });
и моя мутация как:
const Mutation = new GraphQLObjectType({
name: 'Mutation',
fields: {
addWod: {
type: WodType,
args: {
name: { type: new GraphQLNonNull(GraphQLString) },
movements: { type: new GraphQLList(GraphQLString) },
difficulty: { type: new GraphQLNonNull(GraphQLString) },
groupId: { type: new GraphQLNonNull(GraphQLID) }
},
resolve(parent, args) {
let wod = new Wod({
// Use model to create new Wod
name: args.name,
movements: args.movements,
difficulty: args.difficulty,
groupId: args.groupId
});
// Save to database
return wod.save();
}
Массив представляет собой массив строк в разделе "движений" ... любая помощь с запросами, чтобы получить это в React, очень ценится ... вот текущий запрос на интерфейсе ... с использованием Apollo Boost
const getWodsQuery = gql`
{
wods {
id
name
movements
difficulty
}
}
`;

не уверен, что это все еще актуально, я не воссоздавал код, но проблема, вероятно, будет в том, что вы возвращаете «движения» как просто «строку», а не массив строк в типе выходного объекта Wod. Это только предположение, основанное на аргументах, которые вы передаете в мутацию (это список строк). Исправление должно заключаться в изменении типа дерева следующим образом
const WodType = new GraphQLObjectType({
name: 'Wod',
fields: () => ({
id: { type: GraphQLID },
name: { type: GraphQLString },
movements: { type: new GraphQLList(GraphQLString) },
difficulty: { type: GraphQLString },
group: {
type: GroupType,
resolve(parent, args) {
return Group.findById(parent.groupId);
}
})
Обратите внимание, что это только мое предположение, так как я не знаю, как хранятся ваши данные, но, вероятно, это правильно на основе сообщения об ошибке. Я написал статью о реализации списков / массивов в схеме GraphQL, поскольку увидел, что многие люди борются с подобными проблемами. Вы можете проверить это здесь https://graphqlmaster.com/blog/graphql-list-how-to-use-arrays-in-graphql-schema