Mongo-db连接未建立



下面是我用来启动服务器的代码。它在localhost服务器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在我们的应用程序中,为该路由定义的代码片段将是已执行。

在这里,我们正在获取"书籍"中的所有记录collection('Books'(.find((命令。然后,我们将这个集合分配给一个名为cursor的变量。使用这个游标变量,我们将能够浏览集合的所有记录。

在终端中运行sudo mongod

即使将分配给变量url的值更改为mongodb://[user_name]:[password]@127.0.0.1:27017/[your_database_name],是否也无法连接?authSource=admin

实际上,错误与MongoDB版本(MongoClient.connect(url, function(error, db)(有关,MongoDB开发人员已经更改了他们的API。我不知道是哪个版本,当你使用MongoClient.connect(url, function(error, db)时,它会抛出一个错误。所以应该是MongoClient.connect(url, function(err, client)链接到api文档

别忘了运行mongod

相关内容

最新更新