我正在使用/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
函数和相同的Schema来检查数据库中的集合中是否存在用户名和密码,但它无法正常工作。我似乎得到一个多连接错误,我不知道如何避免它。
当我尝试使用数据库中已有的某些凭据进行登录时,控制台会打印出no exist
,表示已达到exports.signin
中的else语句。
答案 0 :(得分:1)
如果在集合中找不到该对象,则docs
的值将为null
。
如果用户输入了错误的凭据,您将在空对象上调用docs.length
,这将导致错误。请改用docs != null
,以避免在length
对象上调用null
。
答案 1 :(得分:0)
试试DateTime end = DateTime.Now.AddSeconds(100);
DateTime now = DateTime.Now;
Response.Write("TotalMinutes : " + (end - now).TotalMinutes);
Response.Write("<br>Minutes : " + (end - now).Minutes);
这是检查文档字段是否存在或为空。