mongodb - Mongo db连接未建立
问题描述
下面是我用来启动服务器的代码。它在本地主机服务器 3000 中运行。
app.use('/', books);
app.listen(3000, function(){
console.log('Server running at port 3000: http://localhost:3000')
});
下面的代码会引发 mongodb 错误。不知道究竟是什么错误。下面是我的代码
var express = require('express');
var router = express.Router();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://127.0.0.1:27017';
// SHOW LIST OF BOOKS
router.get('/book', function(req, res, next) {
MongoClient.connect(url, function(error, db) {
if (error) throw error;
var dbo = db.db("BookStore");
dbo.collection("Books").find().toArray(function(err, result) {
if (err) throw err;
res.send(result);
console.log(result);
db.close();
});
});
});
// SHOW BOOK with ISBN
router.get('/book/:isbn', function(req, res, next) {
var isbn = parseInt(req.params.isbn);
MongoClient.connect(url, function(error, db) {
if (error) throw error;
var dbo = db.db("BookStore");
var query = { "isbn": isbn };
dbo.collection("Books").findOne(query, function(err, result) {
if (err) throw err;
res.send(result);
console.log(result);
db.close();
});
});
});
// Add BOOK
router.post('/book', function(req, res, next) {
MongoClient.connect(url, function(error, db) {
if (error) throw error;
var dbo = db.db("BookStore");
var myobj = {
"isbn":req.body.isbn,
"publisher":req.body.publisher,
"title":req.body.title,
"authors":req.body.authors,
"publishedDate":req.body.publishedDate,
"price":req.body.price
};
dbo.collection("Books").insertOne(myobj, function(err, result) {
if (err) throw err;
res.send('Book with '+req.body.isbn+' is successfully added');
db.close();
});
});
});
// UPDATE BOOK
router.put('/book/:isbn', function(req, res, next) {
var isbn = parseInt(req.params.isbn);
MongoClient.connect(url, function(error, db) {
if (error) throw error;
var dbo = db.db("BookStore");
var query = { "isbn": isbn };
var newvalues = { $set: {
"publisher":req.body.publisher,
"title":req.body.title,
"authors":req.body.authors,
"publishedDate":req.body.publishedDate,
"price":req.body.price
}
};
dbo.collection("Books").updateOne(query, newvalues, function(err, result) {
if (err) throw err;
res.send('Book with '+req.params.isbn+' is successfully updated');
db.close();
});
});
});
// DELETE BOOK
router.delete('/book/:isbn', function(req, res, next) {
var isbn = parseInt(req.params.isbn);
MongoClient.connect(url, function(error, db) {
if (error) throw error;
var dbo = db.db("BookStore");
var query = { "isbn": isbn };
dbo.collection("Books").deleteMany(query, function(err, result) {
if (err) throw err;
res.send('Book with '+req.params.isbn+' is successfully removed');
db.close();
});
});
});
module.exports = router;
代码说明:
我们正在为我们的应用程序创建一个名为“Books”的路由。因此,每当有人浏览我们应用程序的http://localhost:3000/books时,都会执行为该路由定义的代码片段。
在这里,我们通过 db.collection('Books').find() 命令获取“Books”集合中的所有记录。然后我们将此集合分配给一个名为 cursor 的变量。使用这个游标变量,我们将能够浏览集合的所有记录。
解决方案
即使将分配给变量url的值更改为mongodb://[user_name]:[password]@127.0.0.1:27017/[your_database_name]?authSource=admin是否也无法连接?
推荐阅读
- bash - 为什么 zsh 在使用 GNU 并行的 bash 脚本中为我扩展 glob?
- javascript - 在 Flux 架构中,您如何管理分析跟踪?
- jquery - 单击 CSS jQuery 时单选按钮更改文本
- python - Websocket 客户端上的 Python 线程池
- javascript - 每次点击后Javascript函数不返回document.getElementById值
- sql - 在 Apache Superset 中添加一个 druid 集群作为 SQL 数据库
- python - pipenv + pyenv + jupyter
- python - 如何有效地执行这个 numpy 数组操作?
- scala - Spark/scala - 我们可以从数据框中的现有列值创建新列吗
- android - 如何在Android中按顺序(一个接一个)运行两个或多个动画?