Node.js 尝试在mongo db集合中查询时获取空结果
我试图用NodeJS和MongoDB实现登录api,但不幸的是 我总是得到空响应或“无法读取未定义的属性密码”。 当我执行CurrentUser.find().exec(函数(err,user){});-它带来了我所有的收藏 我有这样的模型: users.js: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
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);可以在架构中设置集合名称。在这里