Как правильно обновить определенный столбец в nestjs? - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу сохранить сгенерированный токен в подтвержденной электронной почте колонке пользователя. Маркер является частью ссылки подтверждения, которая будет отправлена ​​пользователю, поэтому, когда пользователь нажимает на ссылку, я могу проверить, соответствует ли она, а затем обновляет ее до «активирована».

Теперь проблема заключается в том, что я не могу понять, как сохранить его в методе ConfirmEmailLink.

   async register(createDTO: CreateUserDto) {
        const { email } = createDTO;
        const user = await this.userModel.findOne({ email })
        if (user) {
            throw new HttpException('User already exists', HttpStatus.BAD_REQUEST);
        }

        const createdUser = new this.userModel(createDTO);
        var newUser = await createdUser.save();


        await SendEmail(createDTO.email, await **this.ConfirmEmailLink(createdUser._id)**, createDTO.email);

        return this.sanitizeUser(createdUser);
        //return null;

    }

В приведенном выше коде есть ConfirmEmailLink, который является параметром метода SendEmail

 async ConfirmEmailLink(userId: string) {
        const id = v4();
        var payload = { userId: userId };
        var secret = process.env.JWT_SIMPLE_TOKEN;
        var token = jwt.encode(payload, secret);
        console.log("This is uuid", userId);

        var link = `${process.env.HOST}/user/confirm/${token}/${id}`;

        let user = await this.userModel.findById(userId);

        if (!user) {
            throw new HttpException("Registration not complete, try again or contact admin", HttpStatus.NOT_FOUND);
        }

       **//This is where the problem is, I want to save the token in ConfirmEmail column** 
        await this.userModel.updateOne({confirmEmail: token});


        return link;

    }

Я буду признателен предложения или, если есть лучший способ сделать это Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

updateOne нужны 2 параметра, фильтр для определения документа, который нужно изменить, и обновление, указывающее, что делать.

.updateOnde({"_id":userId},{"$set":{"confirmEmail": token}})
...