我是 Node.js 和 MongoDB 的新手,开始实现一些 POST API。我正在使用 MongoDB 通过 POST 插入数据,在终端上测试时显示数据库已创建,但在执行 POST 时显示找不到数据库的错误。我不确定我做错了什么。下面是我的代码
const express = require('express');
const MongoClient = require('mongodb').MongoClient;
const bodyParser = require('body-parser');
const app = express();
const port = 8080;
var url = "mongodb://localhost:27017/mydb"
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
app.listen(port, () => {
console.log('We are live on ' + port);
});
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("Database created!");
db.close();
});
app.post('/api/notes', function(req, res) {
var myobj = { text: req.body.body, title: req.body.title };
var dbase = db.db("mydb");
dbase.collection('notes').insertOne(myobj, function(err, result) {
if (err) {
res.send({ 'error': 'An error has occurred' });
} else {
res.send(result.ops[0]);
}
});
});
最佳答案
您的db
在外部不可用,这就是您收到错误的原因。
试试这个方法:
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("Database created!");
global.db=db;
//don't close connection here if you want to use outside just put it as global
});
您可以引用https://groups.google.com/forum/#!msg/node-mongodb-native/mSGnnuG8C1o/Hiaqvdu1bWoJ为了更好地理解 MongoDB 原生连接
其中说:
You open do
MongoClient.connect
once when your app boots up and reuse the db object.It's not a singleton connection pool each
.connect creates anew connection pool
.
关于node.js - MongoDB 不插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48040317/