更新:此问题已解决。我做了流浪汉ssh - 节点app.js,巧合的是让它持续五到十分钟。当我回来时,第一次有结果。现在它每次都正常工作,我不知道这笔交易是什么。
我意识到这个问题可能源于缺乏关于mongoDB和Mongoose的基本知识,但我真的无法找到它的答案。即使我尝试阅读基本文档。希望我的问题是一些愚蠢的简单的事情,我还没想到......
每次运行节点app.js时,都会收到一条消息,表示Express已启动并正在运行侦听端口8000,紧接着是" 错误连接到mongoDB "。 (我使用带有Node,Express和mongoDB的流浪汉机器。)所以localhost:8000至少应该给我一些结果,但是根本没有找到服务器。
几周前我确实让它上班了,我记得我必须做一个 vagrant up - vagrant ssh - mongo - 使用todoDB 然后节点app.js 。如果我退出mongo shell和vagrant ssh登录,它就会停止工作。由于我对mongoDB有点困惑,所以对我来说这似乎很奇怪。我意识到你必须启动并运行流浪汉机器但我认为只要我的连接指定数据库的名称就会创建并使用数据库。现在,无论我在运行应用程序之前是否使用 vagrant ssh - mongo - 使用todoDB ,我都无法在localhost上获得任何结果。我没有改变任何事情。
真的很感激能够解决问题。
以下完整代码。
// config/database.js
dbConfig.connectionString: "mongodb://localhost/todoDB"
// libs/dbHelper.js
let mongoose = require("mongoose");
module.exports = {
initialize : function() {
let dbConfig = require("../config/database.js");
let db = mongoose.connection;
db.on("error", function() {
console.log("Error connecting to mongoDB.");
});
db.once("open", function() {
console.log("Succesfully connected to mongoDB.");
});
process.on("SIGINT", function() {
db.close(function() {
console.log("Mongoose connection disconnected through app termination.");
process.exit(0);
});
});
mongoose.connect(dbConfig.connectionString);
}
};
// app.js
"use strict";
let express = require("express");
let bodyParser = require("body-parser");
let exphbs = require("express-handlebars");
let path = require("path");
let app = express();
let port = process.env.PORT || 8000;
require("./libs/dbHelper").initialize();
app.engine(".hbs", exphbs({
defaultLayout: "main",
extname: ".hbs"
}));
app.set("view engine", ".hbs");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, "public")));
app.use("/", require("./routes/home.js"));
app.use("/", require("./routes/todo.js"));
app.use(function(request, response, next) {
response.status(404).send("error/404");
});
app.use(function(error, request, response, next) {
console.log(error.stack);
response.status(500).send("Something broke");
});
app.listen(port, function() {
console.log("Express app listening on port %s!", port);
});
答案 0 :(得分:0)
尝试替换
dbConfig.connectionString: "mongodb://localhost/todoDB"
带
dbConfig.connectionString: "mongodb://localhost:27017/todoDB"
27017是默认端口,因此如果您在自己设置的其他端口上运行mongo,请相应地进行更改。