我正在使用位于我的 /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/