我试图仅从我的 mongodb 中提取当前用户的数据,以便在 ejs 文件中用于配置文件路径,其中它应该根据每个用户的输入进行自定义

im trying to pull the current user's data only from my mongodb to use in ejs file for a profile route where it should be custom to each user's inputs

希望它呈现当前用户 user.object

app.get("/profile", isLoggedIn, (req,res)=>{
User.find({}, (err,User)=>{
    if(err){
        console.log(err);
        res.redirect("/login");
    }else{
        res.render("pages/userprofile", {User:User});
        console.log(User);
    }
})
});

这是我的用户模式

const mongoose = require("mongoose");
const passportLocalMongoose = require("passport-local-mongoose");
const UserSchema = new mongoose.Schema({
username: String,
password: String,
review: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "Review"
}
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", UserSchema);

当我 运行 代码转到配置文件路径时,它带回了所有用户,我尝试了多种方法只带回一个,但我一直收到错误

您只需使用 findOne 即可获得一个用户。

app.get("/profile", isLoggedIn, (req,res)=>{
    User.findOne({}, (err,User)=>{
        if(err){
            console.log(err);
            res.redirect("/login");
        }else{
            res.render("pages/userprofile", {User:User});
            console.log(User);
        }
    })
    });
app.get("/profile", isLoggedIn, (req,res)=>{
User.findOne({_id: req.user}, (err,User)=>{
    if(err){
        console.log(err);
        res.redirect("/login");
    }else{
        
        res.render("pages/userprofile", {User:User});
        console.log(User);
    }
})
});

我试过 findOne({...}... 成功了!!!谢谢你的帮助

您可以考虑使用 findById(id),因为 Mongoose documentation 建议使用它而不是 findOne({ _id: id })

app.get("/profile", isLoggedIn, (req, res) => {
  User.findById(req.user, (err, User) => {
    if (err) {
      console.log(err);
      res.redirect("/login");
    } else {

      res.render("pages/userprofile", { User: User });
      console.log(User);
    }
  })
});