gpt4 book ai didi

javascript - 保存 Mongoose 数据时出错

转载 作者:行者123 更新时间:2023-12-01 02:40:53 26 4
gpt4 key购买 nike

在我的用户路线内。

var User = require('../models/user');

router.route('/verify')
.get( (req, res) => {
res.render('verify');
})
.post( (req, res, next) => {

const {secretToken} = req.body;
const user = User.findOne({'secretToken' : secretToken});
if(!user)
{
req.flash('error_msg', 'No user found');
res.redirect('/users/verify');
return;
}

user.active = true;
user.secretToken = '';
user.save();




req.flash('success_msg','Thank you.You can now login');
res.redirect('/users/login');





});

这就是我的模型

var userSchema = new mongoose.Schema({
username : {
type : String,
index : true
},
password : {
type : String
},
email : {
type : String,
unique : true
},
password : {
type : String
},
secretToken :
{
type : String
},
active : {
type : Boolean
}
});

var User = module.exports = mongoose.model('User', userSchema);

我设置了一个验证路由,用户将在其中发布他/她的secretToken,如果secretToken与数据库匹配,则该secretToken将被标记为null,并且我的 bool 元素active将从false变为true。所以首先我要获取 secret token 从数据库中,然后我用用户提供的那个进行检查,如果匹配,那么我正在更改我的secretToken并处于事件状态,但问题是我无法保存它。它向我显示了此错误。

类型错误:user.save 不是函数

我的问题不在于创建用户,而是更新已创建用户的信息。

最佳答案

问题出在这里:

const user = User.findOne({'secretToken' : secretToken});

findOne 返回一个您没有等待的 Mongoose promise 。您可能希望在调用 user.save() 时获得该文档,但事实并非如此。您只需要等待 findOne(),然后您应该能够对该文档调用 .save()

关于javascript - 保存 Mongoose 数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com