Mo.
Mo.

Reputation: 27505

GraphQL does not allow to insert array objects in NodeJS

Unfortunately getting error when insert array objects. Here the code

GraphQL Schema

type Member {
  _id: ID!
  member_id: Int!
  first_name: String!
  last_name: String
  username: String
  date: String
}

input MemberInput {
  member_id: Int!
  first_name: String!
  last_name: String
  username: String
  date: String
}

type RootQuery {
  groups: [Group!]!
  members: [Member!]!
  member(member_id: Int!): Member!
}
type RootMutation {
  createGroup(groupInput: GroupInput): Group
  createMember(memberInput: [MemberInput]): Member
}
schema {
  query: RootQuery
  mutation: RootMutation
}

Making array objects

const mutatedAdminsDetails = groupAdminsFull.map(groupAdmin => {
  const rObj = {
    member_id: groupAdmin.id,
    first_name: groupAdmin.first_name,
    last_name: groupAdmin.last_name || '',
    username: groupAdmin.username || '',
    date: new Date().toISOString(),
  };
  return rObj;
});

Array objects mutatedAdminsDetails

[
  {
    member_id: 152356245,
    first_name: 'Subhash',
    last_name: 'Akbar',
    username: 'subhashbhai',
    date: '2019-07-26T14:39:01.314Z'
  },
  {
    member_id: 12312322,
    first_name: 'Shreef',
    last_name: '',
    username: '',
    date: '2019-07-26T14:39:01.314Z'
  }
]

GraphQL mutation query

const requestAdminBody = {
  query: `
      mutation {
        createMember(memberInput:
          [${mutatedAdminsDetails}]
        ) {
          _id
          member_id
          first_name:
        }
      }
    `
};

API request

const insertAdmins = await fetch('http://localhost:3000/graphql', {
  method: 'POST',
  body: JSON.stringify(requestAdminBody),
  headers: {
    'Content-Type': 'application/json',
  }
})
  .then(res => {
    return res.json();
  })
  .then(resData =>
    resData
  )
  .catch(err => err )

Error in terminal

enter image description here

Upvotes: 1

Views: 1355

Answers (1)

Fraction
Fraction

Reputation: 12984

Try to update your mutation to:

const requestAdminBody = {
  query: `
      mutation CreateMember($memberInput: [MemberInput]){
        createMember(memberInput: $memberInput) {
          _id
          first_name
        }
      }
    `,
  variables: { memberInput: mutatedAdminsDetails }
};

Upvotes: 1

Related Questions