node.js - MongoDB 不插入数据

标签 node.js mongodb

我是 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 a new connection pool.

关于node.js - MongoDB 不插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48040317/

相关文章:

未读取 css 模块 : Syntax Error

database - 获取并保存到数据库——时间与内存

MongoDB 查询集合组的集合差异

mongodb - 忽略 MongoDB 中聚合操作中的 NULL 值

node.js - Mongoose 删除不起作用 [findByIdAndRemove]

bash - mongoexport 最近小时数来自 mongodb 的数据

node.js - 我正在尝试将我的 node.js 应用程序部署到 heroku

mysql - 在 node.js - mysql 中使用 where 子句选择查询?

node.js - 加密CryptoJS,不带特殊字符

Node.js 从另一个模块访问方法