Node.js脚本未连接到localhost中的Mongodb数据库
在创建RESTAPI时,我有以下测试代码来运行mongodb和node.jsNode.js脚本未连接到localhost中的Mongodb数据库,node.js,mongodb,Node.js,Mongodb,在创建RESTAPI时,我有以下测试代码来运行mongodb和node.js MONGO.JS var mongoose = require("mongoose"); mongoose.connect('mongodb://localhost/smartRideDb'); // create instance of Schema var mongoSchema = mongoose.Schema; // create schema var userSchema = {
MONGO.JS
var mongoose = require("mongoose");
mongoose.connect('mongodb://localhost/smartRideDb');
// create instance of Schema
var mongoSchema = mongoose.Schema;
// create schema
var userSchema = {
"id" : String,
"email" : String,
"password" : String
};
// create model if not exists.
module.exports = mongoose.model('user',userSchema);
index.js定义为
var mongoOp = require("./models/mongo");
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var router = express.Router();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({"extended" : false}));
app.use('/' , router);
var port = process.env.PORT || 3000;
/**
*
*
*
*/
// Generic error handler used by all endpoints.
function handleError(res, reason, message, code)
{
console.log("ERROR: " + reason);
res.status(code || 500).json({"error": message});
}
/**
*
*
*
*/
router.get("/",function(req,res)
{
res.json({"error" : false,"message" : "Hello World"});
});
//route() will allow you to use same path for different HTTP operation.
//So if you have same URL but with different HTTP OP such as POST,GET etc
//Then use route() to remove redundant code.
router.route("/users").get(function(req, res)
{
var response = {};
mongoOp.find({},function(err,data)
{
if(err)
{
response = {"error" : true,"message" : "Error fetching data"};
}
else
{
response = {"error" : false,"message" : data};
}
res.json(response);
});
});
app.listen(port);
console.log("Listening to PORT " + port);
当我运行时,我得到了这个错误
Muhammads-MBP:Api Umar$ node index.js
Listening to PORT 3000
/Users/Umar/Desktop/Projects On List Data/Creative Studios/School Ride/Api/node_modules/mongodb/lib/server.js:242
process.nextTick(function() { throw err; })
^
Error: connect ECONNREFUSED 127.0.0.1:27017
at Object.exports._errnoException (util.js:890:11)
at exports._exceptionWithHostPort (util.js:913:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1057:14)
为什么mongodb无法获取请在应用程序之前尝试调用与mongo的连接。听着,mongoose在默认情况下会打开一个连接池来处理请求
mongoose.connect('mongodb://localhost/dbname', function(err) {
if (err) throw err;
app.listen(port);
console.log("Listening to PORT " + port);
});
尝试在应用程序之前调用与mongo的连接。听着,mongoose默认情况下会打开一个连接池来处理请求
mongoose.connect('mongodb://localhost/dbname', function(err) {
if (err) throw err;
app.listen(port);
console.log("Listening to PORT " + port);
});
最常见的故障排除步骤:
最常见的故障排除步骤:
您可能希望首先通过以下方法确保MongoDB已正确设置
mongod
,以运行MongoDBmongo
,您应该可以看到类似的内容您可能希望首先通过以下方法确保MongoDB已正确设置
mongod
,以运行MongoDBmongo
,您应该可以看到类似的内容你能用命令telnet到吗:
telnet 127.0.0.1 17027
?Nop@thahnguyenvan,我在用mac只是好奇你是否启动了mongod服务?当我忘记打开电源时,我总是会出现这种错误。或者您可以重新启动mongo服务吗?您还可以打开一个终端,只需运行mongo
,看看您是否能够connect@ChinKang只写mongo没有找到命令。我使用的MoonGoSeMongose是连接mongoDB的JS连接器mongo
是安装MongoDB时附带的CLI,因此如果安装了mongo,您应该能够在mac上运行它。您可以使用以下命令telnet to:telnet 127.0.0.1 17027
?Nop@thahnguyenvan,我正在使用mac,只是好奇您是否启动了mongod服务?当我忘记打开电源时,我总是会出现这种错误。或者您可以重新启动mongo服务吗?您还可以打开一个终端,只需运行mongo
,看看您是否能够connect@ChinKang只写mongo没有找到命令。我使用的MoonGoSeMongose是连接mongoDB的JS连接器mongo
是安装MongoDB时附带的CLI,因此如果安装了mongo,您应该能够在mac上运行它如何检查mongod是否在该端口运行,如果没有,如何运行?@MuhammadUmar打开您的终端并键入mongo
。查看发生了什么只需转到终端并键入mongo
。默认情况下,它使用该端口,因此如果它转到mongo shell,那么您就知道mongod正在运行。否则,您可以使用ps-ef | grep mongo
进行检查。如何检查mongod是否在该端口运行,如果没有,如何运行?@MuhammadUmar打开您的终端并键入mongo
。查看发生了什么只需转到终端并键入mongo
。默认情况下,它使用该端口,因此如果它转到mongo shell,那么您就知道mongod正在运行。否则,您可以使用ps-ef | grep mongo来检查它。好的,谢谢您的帮助,我没有专门安装mongodb,我以为moongose会这么做。谢谢,谢谢,这很有效,我没有专门安装mongodb,我以为moongose会这么做。谢谢