简体   繁体   中英

How to insert multiple array objects without existing data in MongoDB with GraphQL

Current GraphQL resolver is to insert on user data. I need to insert multiple array objects to MongoDB only if the id (id != member_id) does not exist in the members database.

Datas which needs to insert

[
  {
    first_name: "Mate",
    id: 402335654,
    is_bot: false,
    language_code: "ml"
  }, {
    first_name: "testerbot",
    id: 357622799,
    is_bot: false,
    username: "testergroupbot"
  }, {
    first_name: "machan",
    id: 1225612,
    is_bot: false,
    language_code: "ml",
    username: "alavalathi"
  }
]

Current resolvers

createMember: async args => {
  try {
    const existMember = await Member.findOne({
      member_id: args.memberInput.member_id,
    });
    if (existMember) {
      throw new Error('This user already exist');
    }
    const member = new Member({
      member_id: args.memberInput.member_id,
      first_name: args.memberInput.first_name,
      last_name: args.memberInput.last_name,
      username: args.memberInput.username,
      date: new Date(args.memberInput.date),
    });

    const result = await member.save();
    // eslint-disable-next-line no-underscore-dangle
    return { ...result._doc };
  } catch (error) {
    throw error;
  }
},

I am a beginner to GraphQL and MongoDB.

The solution comes with insertMany()

createMember: async args => {
  try {
    const newMembers = await args.memberInput.map(arg => ({
      member_id: arg.member_id,
      first_name: arg.first_name,
      last_name: arg.last_name,
      username: arg.username,
      date: new Date().toISOString(),
    }));

    const results = await Member.insertMany(newAdmins);
    return results.map(result => {
      return { ...result._doc };
    });
  } catch (error) {
    throw error;
  }
},

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM