Не удается прочитать свойство 'find' из неопределенного - PullRequest
0 голосов
/ 30 апреля 2020

Я работал над этим 2 недели подряд и, похоже, не смог передать простую функцию и переменные моему файлу e js. Почти собираюсь сдаться.

Вот мой код ниже со всеми требованиями.

Я включил приложение. js код файла, файл E JS и файл Embed. js, который имеет mon goose Схемы для пользователя и комментариев, определенные на основе данных соответственно. Кроме того, я считаю, что вложение, которое работает успешно, для комментариев, сделанных пользователями, является частью атрибутов каждого пользователя в разделе «комментарии», который сам имеет атрибут «сообщение» для каждого сообщения, которое они имеют.

Это немного сбивает с толку, но я считаю, что это хорошо связывает воедино (но это может быть неправильно), поэтому, когда я запускаю код, он работает нормально, но когда я go в базу данных, чтобы попытаться найти это комментарии пользователей Я не вижу его, может быть, это не сохранение комментариев?

Некоторые комментарии, похоже, сохранены, от того, как у меня был код до того, как я выполнял команды Create с более старой версией моего кода, а затем теперь, кажется, он также работает нормально, но я не могу найти какие-либо комментариев для отображения, и продолжает говорить мне, что функция прямо перед моей командой .forEach не определена и не имеет значения.

Так что иногда я мог заставить его работать, но он не отображал никаких данных из базы данных, независимо от того, были ли они сохранены даже раньше или сейчас. Кажется, чтобы сохранить, но не можете найти данные из базы данных?

Я очень запутался, поскольку данные журнала, которые отображаются при каждом запуске кода, содержат массу комментариев, которые были сохранены в записи.

Но в любом случае это просто говорит мне, что оно не определено, поэтому я чувствую, что на данные в файле E JS не ссылаются должным образом, и, возможно, даже не будет сделано правильно для ссылки на эти данные в первую очередь из файл приложения. 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);
    }
})
...