user.findOne() 总是返回 null
Posted
技术标签:
【中文标题】user.findOne() 总是返回 null【英文标题】:user.findOne() always returns null 【发布时间】:2021-06-02 07:09:17 【问题描述】:我正在尝试从本地 MongoDB 实例获取猫鼬返回数据。其他一切都运行良好。该表格正在向护照提供数据。我还手动将数据插入到 mongodb 中。唯一的错误是在 user.findOne 中。当我将用户打印到控制台时,它不是返回一些数据而是返回 null
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/member');
// authentication using passport
passport.use(new LocalStrategy(
usernameField: 'user',
passwordField: 'password'
,
function (username, password, done)
User.findOne( user: username , function (err, user)
// console.log(user, username, password);
if (err)
console.log(`Error in configuring passport-local \n $err`);
return done(err);
if (!user)
console.log(`Invalid username or password!!`)
return done(null, false);
return done(null, user);
);
));
我的架构:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema(
user:
type: String,
required: true,
unique: true
,
password:
type: String,
required: true
,
dept: String,
yr: Number,
name:
type: String
,
timestamps: true
);
module.exports = mongoose.model('member_list', userSchema, 'member_list');
这是我的完整代码:https://github.com/krush11/site
如果您需要更多信息,请告诉我
【问题讨论】:
【参考方案1】: const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/member');
// authentication using passport
passport.use(new LocalStrategy(
usernameField: 'user',
passwordField: 'password'
,
async function (username, password, done)
await User.findOne( user: username , function (err, user)
// console.log(user, username, password);
if (err)
console.log(`Error in configuring passport-local \n $err`);
return done(err);
if (!user)
console.log(`Invalid username or password!!`)
return done(null, false);
return done(null, user);
);
));
该函数看起来不错,但尝试使其异步然后await
来自数据库的查询。看看我对您的代码所做的修改。您可能还想重构您的代码并使用承诺而不是回调并将所有内容包装在 try catch
块内。
但是使函数异步并等待查询将解决问题,这是因为findOne()
方法实际上返回了一个查询,并且在您控制台之前可能尚未完成。
如果您还有任何问题,请告诉我。
【讨论】:
以上是关于user.findOne() 总是返回 null的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose User.findOne 既不返回错误也不返回成功