无法读取未定义的属性“查找”

时间:2020-04-29 23:22:03

标签: javascript mongoose undefined ejs

这已经连续进行了2周,似乎无法将简单的函数和变量传递到我的ejs文件中。快要放弃了。

这是我的下面所有要求的代码。

我包括了app.js文件代码,EJS文件和Embed.js文件,它们分别基于详细信息为用户和注释定义了猫鼬模式。我认为,还包括成功工作的嵌套,以使用户的注释成为“注释”下每个用户属性的一部分,该注释本身具有一个属性,即每个消息所具有的“消息”。

这有点令人困惑,但是我认为链接的很好(但是可能是错误的),所以当我运行代码时,它可以正常工作,但是当我进入数据库尝试发现用户的评论时,我却没有最终看不到它,也许它没有保存评论?

一些注释似乎已经保存了,这与我以前运行代码时使用代码的旧版本的方式一样,现在似乎也可以正常运行,但是我找不到任何注释显示,并一直告诉我.forEach命令之前的函数未定义且没有值。

所以有时候我可以让它运行,但是无论它是从以前还是现在保存的,它都不会显示数据库中的任何数据。似乎可以保存,但是无法从数据库中找到数据?

我非常困惑,因为每次代码运行时都会显示日志数据,因此已经记录了大量评论。

但是无论哪种方式都只是告诉我它没有定义,所以我觉得EJS文件中的数据引用不正确,甚至可能没有正确地从app.js文件中首先引用该数据,或可能在embed.js文件中。我不确定该怎么办;尝试了一切,我觉得答案远不止于此。

任何帮助将不胜感激。

// APP.JS FILE

 // REQUIRE ALL OF THE FILES INSTALLED ON DEPENDENCIES

var express = require('express');
var app = express();    
var bodyParser = require("body-parser");
var mongoose = require("mongoose");
var passport = require('passport');
var LocalStrategy = require('passport-local');
// var Comment = require('./models/comment.js');
// var User = require('./models/user.js');
var Embed = require('./models/embed');
// const ejsLint = require('ejs-lint');

var CSSapp = require('./public/stylesheets/app.css');
var db = mongoose.connection;
var User = User;
var Comment = Comment;
var path = require('path');


db.on("error", function(error) {
  console.log("Mongoose Error: ", error);
});

mongoose.connect('mongodb://localhost/brainstudent', { useNewUrlParser: true });
app.set('views', './brainstudentreal/views');
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: false }));
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(__dirname + '/public'));

app.get("/comment", function(req, res) {
    // find all the users and their respective comments
    db.Users.find({}, function(err, user) {
        if(err) {
            console.log(err);
        } else {
            console.log(user);
            res.render("comment", {user: user});
        }
    })
})


// EJS FILE 

<div>
        <% users.forEach(function(comment) { %>
    <p><%= comment.message %> </p>

        <% }) %>
</div>



// THIS IS THE EMBED.JS FILE WITH COMMENT AND USER DEFINED IN MONGOOSE SCHEMA
// REQUIRE ALL OF THE FILES INSTALLED ON DEPENDENCIES

var express = require('express');
var app = express();    
var bodyParser = require("body-parser");
var mongoose = require("mongoose");
var passport = require('passport');
var LocalStrategy = require('passport-local');
// var Comment = require('./models/comment.js');
// var User = require('./models/user.js');
// var Embed = require('./models/embed');
// const ejsLint = require('ejs-lint');






    mongoose.connect('mongodb://localhost/brainstudent', { useNewUrlParser: true });
    app.set('views', './brainstudentreal/views');
    app.set("view engine", "ejs");
    app.use(bodyParser.urlencoded({ extended: false }));
    var path = require('path');
    app.set('views', path.join(__dirname, 'views'));
    app.use(express.static(__dirname + '/public'));


    // define comment in variable before userSchema

    //REQUIRED FROM MODELS FILE COMMENT.JS
    // var Comment = require('./comment.js');

    var commentSchema = mongoose.Schema ({
         message: {type: String}
    });

    var Comment = mongoose.model("Comment", commentSchema);
    module.exports = Comment;

    //REQUIRED FROM MODELS FILE USER.JS

    // var User = require('./user');

    // THE MODEL USED FOR COMMENTING FOR USERS respective of each USER
    // var Comment = require('comment');

    var userSchema = mongoose.Schema({
        name: {type: String},
        email: {type: String},
        city: {type: String},
        careertype: {type: String},
        comments: [
            {
                type: mongoose.Schema.Types.ObjectId,
                ref: "Comment"
            }

        ]
    });

    var User = mongoose.model("User", userSchema);
    module.exports = User;

Comment.create({
    message: "a new message that I've made! an even NEWER one yo. I guess this will never end.."
}, function(err, comment) {
    User.findOne({name: "Charlie"}, function(err, foundUser) {
        if(err) {
            console.log(err);
        } else {
            foundUser.comments.push(comment);
            foundUser.save(function(err,data) {
                if (err) {
                    console.log(err);
                } else {
                    console.log(data);
                }
            })
        }
    })
}

)

User.findOne({email: "charliebrown@gmail.com"}).populate("comments").exec(function(err, user) {
    if(err) {
        console.log(err);
    } else {
        console.log(user);
    }
})

0 个答案:

没有答案