这已经连续进行了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);
}
})