gpt4 book ai didi

javascript - 使用node js和mongodb时出现多个连接错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:48 25 4
gpt4 key购买 nike

我正在使用位于我的 /routes/schema.js 中的以下架构文件...

var mongoose = require('mongoose');


var Schema = mongoose.Schema;

var userSchema = new Schema({
username: String,
password: String,
name: String,
last: String,
year: Number,
degree: String

});

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

module.exports = {
User: User
}

在我的/routes/register.js文件我正在使用 POST 数据存储一些信息...

var User = require('../routes/schema').User; 

exports.postRegister = function (req, res) {
var u = new User({
username: req.body.reg_username,
password: req.body.reg_password,
name: req.body.reg_name,
last: req.body.reg_lastname,
year: req.body.reg_year,
degree: req.body.reg_degree
});

u.save(function (err) {
if (err) {
throw err;
}
else {
console.log("saved");
res.render('index', { title: 'Express' });

}
});
}

一切都很好地保存在我的数据库中。但现在,这个register.js文件将用户重定向回/routes/index.js然后,用户必须使用数据库中存储的一些凭据登录。

所以在我的 index.js 中文件我需要检查用户名和密码是否同时存在于我的数据库的集合中,我尝试了以下操作...

var User = require('../routes/schema').User; 

exports.signin = function (req, res) {
User.findOne({
username: req.body.log_username,
password: req.body.log_password
}, function (err, docs) {
if (docs.length) {
console.log("name exists");
}
else {
console.log("no exist");
}
});
};

我使用了findOne使用相同架构的函数来检查用户名和密码是否存在于数据库的集合中,但它无法正常工作。我似乎遇到了多重连接错误,但我不知道如何避免它。

当我尝试使用数据库中已有的某些凭据登录时,控制台打印出 no exist意思是 exports.signin 中的 else 语句已达到。

最佳答案

如果在集合中未找到该对象,则 docs 的值将为 null

如果用户输入错误的凭据,您将在空对象上调用docs.length,这将导致错误。请改用 docs != null,以避免在 null 对象上调用 length

关于javascript - 使用node js和mongodb时出现多个连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37768026/

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