node.js - Mongoose FindOne 方法始终返回 'null'

标签 node.js mongodb express mongoose

我正在尝试使用 mongoose 让我的 Express 应用程序与 MongoDb 一起使用。

这是代码(编辑之后):

var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
    username: String,
    password: String
});
var Users = mongoose.model('Users', UserSchema);
/* GET admin page. */
router.get('/', function(req, res, next) {
    res.render('admin/admin', {
        title: 'Admin'
    });
});

router.post('/login', function(req, res, next) {
    console.log(req.body.username);
    Users.findOne({
        username: req.body.username
    }, function(err, user) {
        console.log('Error: ' + err, user);
    });
    // console.log(req.body.username, req.body.password);
    // passport.authenticate('local', {
    //     successRedirect: '/',
    //     failureRedirect: '/admin'
    // });
});
module.exports = router;

我的问题是我在我的集​​合中找不到用户。我已经尝试指定一个具有多个字符串格式(大写或不大写)的集合名称,正如您所看到的,并且就像其他帖子在同一主题上的答案所指出的那样。

即使文档已正确添加到集合中,findOne() 方法也始终会传递错误回调。

如果你们中有人有想法或什么!

非常感谢!

编辑:

根据您的建议,我更新了代码以获得更合乎逻辑的内容。

在我的 MongoLab Users 集合中,我有一个这样的文档:

{
    "_id": {
        "$oid": "5641e9a1e4b0af6681f0bef1"
    },
    "username": "admin",
    "password": "admin"
}

POST数据之后,“admin”与用户名完全相同, Mongoose 查询返回:

web.1  | admin                // req.body.username
web.1  | Error: null null     // findOne() error callback 

mongoDB 操作仅在 ./routes/admin.js 中,而 moongose.connection 仅发生在 ./index.js 中。我对模块概念不太满意......

最佳答案

为了能够运行查询,您必须首先创建一个模型:

var schema = new mongoose.Schema({
username: String,
password: String});
var Users = mongoose.model('Users-CollectionName', schema);


然后根据需要查询数据库。

    Users.findOne({
    username: req.body.username
}, function(err, user) {
    console.log('Error: ' + err, user);
});

关于node.js - Mongoose FindOne 方法始终返回 'null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620038/

相关文章:

MongoDB Hadoop 流适配器

javascript - Node.js 和 Express.js 错误 : Can't set headers after they are sent

node.js - 在 Node.js api 中提供 JSON 响应时防止缓存

javascript - Node.js 4.2.1 中的导出和导入

node.js - 在 Gulp/Node 中将 jekyll 作为子进程运行

node.js - React-apollo 错误 : [Network error]: ServerParseError: JSON. 解析:JSON 数据第 1 行第 1 列出现意外字符

mongo 的 JavaScript 驱动程序与控制台具有相同的语法

javascript - 查询 MongoDB,用正则表达式替换一个特定字段

forms - Express.js 表单处理和错误检查——正确的方法

javascript - 由 npx/node/npm 执行的 google 闭包编译器