Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 尝试在mongo db集合中查询时获取空结果_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Node.js 尝试在mongo db集合中查询时获取空结果

Node.js 尝试在mongo db集合中查询时获取空结果,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我试图用NodeJS和MongoDB实现登录api,但不幸的是 我总是得到空响应或“无法读取未定义的属性密码”。 当我执行CurrentUser.find().exec(函数(err,user){});-它带来了我所有的收藏 我有这样的模型: users.js: const mongoose = require('mongoose'); const {Schema} = mongoose; const UserSchema = Schema({ firstname: { type: S

我试图用NodeJS和MongoDB实现登录api,但不幸的是 我总是得到空响应或“无法读取未定义的属性密码”。 当我执行CurrentUser.find().exec(函数(err,user){});-它带来了我所有的收藏

我有这样的模型:

users.js:

const mongoose = require('mongoose');
const {Schema} = mongoose;
const UserSchema = Schema({  
   firstname: { type: String, required: true },  
   lastname: { type: String, required: true },  
   email: { type: String, required: true },  
   password: { type: String, required: true }
}); 
module.exports = mongoose.model('User', UserSchema);
my router.js:

const mongoose = require('mongoose');
const AlbuMmodel = require('../src/lib/models/album');
const UserModel = require('../src/lib/models/users');
const CurrentUser = require('../src/lib/models/users');
const express = require('express');
const bodyParser = require('body-parser');
const session = require('express-session');
const cookieParser = require('cookie-parser');

mongoose.connect('mongodb://localhost/shopdb');
mongoose.Promise = global.Promise;

var app = express();

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(cookieParser('secret'));
app.use(session({secret: 'qwerty', saveUninitialized: true, resave: false}));

exports.loginUser = function (req, res){    
  var useremail = req.body.email;
  var psw = req.body.password;

   CurrentUser.find({email:useremail}).exec(function(err, user) {
    if(err){
        return res.send({"status":"500","message":"There is a problem. Please try later"});
    }   
    if(!user){
        return res.send({"status":"410", "message":"Invalid password or email"});
    }       
    if (!err) {         
        if(psw == user[0].password){
            req.session.user = user;
            return res.send(user[0]);
        } 
        else{
            return res.send({"status":"410", "message":"Invalid password or email"});
        }

    } 
    else{
        req.session.reset();
        return res.send({"status":"400", "message":"Invalid password or email"});
    }       
});
};

在数据库中,集合被保存并命名为:users

首先尝试控制台req.body.password,查看它是否来自客户端。是的,我可以看到它。我认为问题在于查询或集合名称。mongo返回空object在这里使用
findOne
而不是
find
会更好,因为您只需要一个匹配的文档,这样会更容易调试。我有一个问题:我的db集合是命名用户。在mongoose.model中必须是user或users?现在是:module.exports=mongoose.model('User',UserSchema);可以在架构中设置集合名称。在这里