将 mongodb 查找的结果分配给变量
Assigning the Result of a mongodb Find to a Variable
我试图将 mongodb 中的查找结果分配给一个变量(下面的 var user = db.collection("Users").findOne),但该变量仍未定义。我知道 find 函数 returns 是一个游标,但根据我的理解,findOne 函数应该是不同的。有人知道如何将查找结果分配给变量吗?
passport.use(
new LocalStrategy(
{
usernameField: "email",
passwordField: "userName"
},
(email, result, done) => {
var query = {email: email}
var user = db.collection("Users").findOne((query) => {
return true
})
if (user) {
done(null, user)
} else {
done(null, false, { message: 'Incorrect username or password'})
}
}
)
)
它总是 return 未定义 findone
需要一个回调这是如何工作的
var query = {email: email}
var user = db.collection("Users").findOne(query,(err,user) => {
if (user) {
done(null, user)
} else {
done(null, false, { message: 'Incorrect username or password'})
}
您应该从 if/else 块 return 然后调用函数。
我会在查询 db 后使用错误优先回调模式重构为类似这样的东西,或者尝试重构为有助于优雅错误处理的异步函数。我认为原生 mongodb 连接器提供了 Promise 支持。
const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;
passport.use(
new LocalStrategy(
{
usernameField: "email",
passwordField: "userName",
},
(email, result, done) => {
db.collection("Users").findOne({ email: email }, (err, user) => {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
message: "Incorrect username or password",
});
}
return done(null, user);
});
},
),
);
我试图将 mongodb 中的查找结果分配给一个变量(下面的 var user = db.collection("Users").findOne),但该变量仍未定义。我知道 find 函数 returns 是一个游标,但根据我的理解,findOne 函数应该是不同的。有人知道如何将查找结果分配给变量吗?
passport.use(
new LocalStrategy(
{
usernameField: "email",
passwordField: "userName"
},
(email, result, done) => {
var query = {email: email}
var user = db.collection("Users").findOne((query) => {
return true
})
if (user) {
done(null, user)
} else {
done(null, false, { message: 'Incorrect username or password'})
}
}
)
)
它总是 return 未定义 findone
需要一个回调这是如何工作的
var query = {email: email}
var user = db.collection("Users").findOne(query,(err,user) => {
if (user) {
done(null, user)
} else {
done(null, false, { message: 'Incorrect username or password'})
}
您应该从 if/else 块 return 然后调用函数。
我会在查询 db 后使用错误优先回调模式重构为类似这样的东西,或者尝试重构为有助于优雅错误处理的异步函数。我认为原生 mongodb 连接器提供了 Promise 支持。
const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;
passport.use(
new LocalStrategy(
{
usernameField: "email",
passwordField: "userName",
},
(email, result, done) => {
db.collection("Users").findOne({ email: email }, (err, user) => {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
message: "Incorrect username or password",
});
}
return done(null, user);
});
},
),
);