我正在用Node、Express和MongoDB构建一个REST api服务。我安装了MongoDB,它在我的PC上运行正常,本地主机:27017。我可以添加集合并阅读它们。在我的app.js文件中,我有这样的设置
var express = require('express'); var mongoose = require('mongoose'); var bodyParser = require('body-parser'); mongoose.connect('mongodb://127.0.0.1:27017/bookAPI'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function callback () { console.log("h"); }); var app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); var port = process.env.PORT || 3000; app.use('/api', require('./routes/api.js')); app.listen(port, function(){ console.log('Running on port ' + port); });
我总是得到一个错误-mongoerror-cannot connect UNKNOWN我搜索了几个小时,没有找到任何解决方案。我该如何修复它,使它可以连接到MongoDB(工作正常)...?
我解决了这个问题,安装了稳定的猫鼬。它是mongoose 4.x,我已经在WinXP中安装了3.8(npm install mongoose@3.8.*)。
const dbpath = "mongodb+srv://127.0.0.1/bookAPI";
// Data connection
mongoose.connect(dbpath, {user: 'username', pass: 'password', useUnifiedTopology: true , useNewUrlParser: true })
.then(()=> console.log("Now connected to MongoDB!"))
.catch(err=> console.error("Something went wrong", err));
我用的是指南针,这段代码工作得非常好。