我正在使用Node.JS、Express、MongoDB和EJS。我有一个关于一个数据库下多个MongoDB集合的问题,并在前端调用它们时出现了问题。我有3个集合,经过很多研究,我没有找到如何调用多个集合而不出错的方法。
我知道把所有东西都存储在一个集合下不会有问题,但我觉得最好的方法是按类别分开它们。这是我的db/collection调用:
我该如何对其他集合进行多次调用,例如“关于”集合等?我尝试添加另一个...
"...在...范围内..."
...但是它在终端控制台日志中给我错误提示。
提前感谢您的帮助。
编辑:
以下是我尝试做的事情,但是它给了我一个错误:
这是控制台中的错误:
所以我在 MongoDB 中有两个集合,都在名为“michael”的数据库下,我正在尝试在一个 MongoClient.connect() 下调用它们。然后我将结果分别存储在两个数组中,通过 EJS 将它们发送到前端:"portfolio" 和 "about"。当我这样做时,似乎渲染 "portfolio" 时出现了未定义的错误。希望这样说得清楚了。
我知道把所有东西都存储在一个集合下不会有问题,但我觉得最好的方法是按类别分开它们。这是我的db/collection调用:
app.use(express.bodyParser());
var MongoClient = require('mongodb').MongoClient;
app.get('/', function(req, res){
MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
if(!err) {
console.log("We are connected");
}
db.collection("portfolio", function(err, collection) {
collection.find().sort({order_num: 1}).toArray(function(err, result) {
var portfolio = [];
if (err) {
throw err;
} else {
for (i=0; i<result.length; i++) {
portfolio[i] = result[i];
}
res.render('index.html', {portfolio: portfolio});
}
});
});
});
});
我该如何对其他集合进行多次调用,例如“关于”集合等?我尝试添加另一个...
db.collection("about", function(err, collection) {
"...在...范围内..."
MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
...但是它在终端控制台日志中给我错误提示。
提前感谢您的帮助。
编辑:
以下是我尝试做的事情,但是它给了我一个错误:
app.get('/', function(req, res){
MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
if(!err) {
console.log("We are connected");
}
db.collection("portfolio", function(err, collection) {
collection.find().sort({order_num: 1}).toArray(function(err, result) {
var portfolio = [];
if (err) {
throw err;
} else {
for (i=0; i<result.length; i++) {
portfolio[i] = result[i];
}
res.render('index.html', {portfolio: portfolio});
}
});
});
// Here's the additional collection call:
db.collection("about", function(err, collection) {
collection.find().sort({order_num: 1}).toArray(function(err, result) {
var about = [];
if (err) {
throw err;
} else {
for (i=0; i<result.length; i++) {
about[i] = result[i];
}
res.render('index.html', {about: about});
}
});
});
});
});
这是控制台中的错误:
ReferenceError: /Volumes/Files/WebDev/RHC/michael/michael/views/index.html:62
60| <div class="row-fluid">
61| <ul id="work" class="thumbnails">
>> 62| <% for(i=0; i<portfolio.length; i++) { %>
63| <% if (portfolio[i].proj_type == "work") { %>
64| <% var newLine = ""; %>
65| <% var fancyBox = ""; %>
portfolio is not defined
所以我在 MongoDB 中有两个集合,都在名为“michael”的数据库下,我正在尝试在一个 MongoClient.connect() 下调用它们。然后我将结果分别存储在两个数组中,通过 EJS 将它们发送到前端:"portfolio" 和 "about"。当我这样做时,似乎渲染 "portfolio" 时出现了未定义的错误。希望这样说得清楚了。
db.collection
调用时,在同一数据库查询中引用一个新的集合,页面会在某些刷新时呈现,并在其他情况下跳过所有 CSS。似乎尝试调用另一个集合并将其推送到前端会使 EJS 混淆,并呈现先前的集合变量未定义。 - michaelzick