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

标签 javascript node.js mongodb mongoose

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

相关文章:

javascript - get() 解析查询结果是否执行另一个数据库调用?

javascript - 从 HTML 页面连接到 Coldfusion Websocket

javascript - 以字符串形式返回一个元素 输出未定义

javascript - 使用 ckeditor 捕获事件

javascript - 必须手动启用 Electron 生成器桌面快捷方式图标

node.js - 具有多个文件的简单 Nodejs 示例

javascript - app.use 在发送错误后出现 Can\t set headers 错误

node.js - 如何通过使用填充或在 mongodb 中使用聚合进行内部查询来使用填充功能

oracle - Oracle Data Integrator 有没有办法从 MongoDB 中提取数据

javascript - Meteor.js 集合未在 mongo 中创建