How to check if that data already exist in the database during update (Mongoose And Express)

后端 未结 8 1886
灰色年华
灰色年华 2020-12-05 00:28

How to do validations before saving the edited data in mongoose?

For example, if sample.name already exists in the database, the user will receive a som

8条回答
  •  粉色の甜心
    2020-12-05 00:35

    There is a more simpler way using the mongoose exists function

    router.post("/groups/members", async (ctx) => {
        const group_name = ctx.request.body.group_membership.group_name;
        const member_name = ctx.request.body.group_membership.group_members;
        const GroupMembership = GroupModels.GroupsMembers;
        console.log("group_name : ", group_name, "member : ", member_name);
        try {
            if (
                (await GroupMembership.exists({
                    "group_membership.group_name": group_name,
                })) === false
            ) {
                console.log("new function");
                const newGroupMembership = await GroupMembership.insertMany({
                    group_membership: [
                        { group_name: group_name, group_members: [member_name] },
                    ],
                });
                await newGroupMembership.save();
            } else {
                const UpdateGroupMembership = await GroupMembership.updateOne(
                    { "group_membership.group_name": group_name },
                    { $push: { "group_membership.$.group_members": member_name } },
                );
                console.log("update function");
                await UpdateGroupMembership.save();
            }
            ctx.response.status = 201;
            ctx.response.message = "A member added to group successfully";
        } catch (error) {
            ctx.body = {
                message: "Some validations failed for Group Member Creation",
                error: error.message,
            };
            console.log(error);
            ctx.throw(400, error);
        }
    });
    

提交回复
热议问题