node.js - 在nestjs中更新特定列的正确方法是什么
问题描述
我想将生成的令牌保存到用户确认的电子邮件列中。令牌是发送给用户的确认链接的一部分,这样当用户点击链接时,我可以检查它是否匹配,然后将其更新为“已激活”。
现在的问题是我不知道如何在 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;
}
我会很感激你的建议,或者如果有更好的方法来做到这一点谢谢
解决方案
updateOne
需要 2 个参数,一个用于识别要修改哪个文档的过滤器,以及一个指示要做什么的更新。
.updateOnde({"_id":userId},{"$set":{"confirmEmail": token}})
推荐阅读
- c# - 有没有办法在文件中的特定标签之间插入一些行
- sql-server - 在 SQL Server 中提取数据 XML 列
- mongodb - Model.findOne 没有按预期工作?
- typescript - 带有通用参数的 TypeScript InstanceType
- cmake - 我如何使用逻辑 CMake 生成器?
- dataset - 通过 WEKA 上的 URL 打开数据集
- python - 部署后将文件上传到文件夹烧瓶应用程序的问题
- docker - 使用 microsoft/aspnet docker 映像出现 Windows 容器错误的 Service Fabric
- python - 使用给定密码从加密的 rar 文件中提取内容
- dask - 具有异步实时并行性的 Dask 分布式